Estoy tratando de canalizar la grep
salida a rm
, pero produce cosas inútiles. ¿Se requiere algún cambio rm
? ¿O se le rm
puede proporcionar una expresión regular directamente?
ls | grep '^\[Daruchini'| rm
rm: operando faltante Pruebe `rm --help 'para obtener más información.
Respuestas:
Debe usar
xargs
para convertir la entrada estándar en argumentos pararm
.(Tenga cuidado con los caracteres especiales en los nombres de archivo; con GNU grep, puede preferir
)
Además, aunque el shell no usa expresiones regulares, ese es un patrón simple:
(Mientras tanto, creo que necesito dormir más).
fuente
rm Dar*
, norm !(Dar*)
.zsh
^
modo (similar a labasg
!
cosa).| tr "\n" "\0"
antes delxargs
bit. Visto en esta publicación: stackoverflow.com/questions/20307299/…No analice la salida de
ls
.Aquí, es muy simple hacer que el shell filtre los archivos que desea. Tenga en cuenta que es el shell lo que está expandiendo el patrón
Dar*
, no elrm
comando. La expansión del patrón realizada por el shell se llama globbing .En casos más complejos, busque el
find
comando.fuente
Si desea delimitar la salida de
grep
por líneas nuevas en lugar de espacios en blanco, puede especificarlo axargs
través de la-d
opción.(como se describe en esta pregunta)
fuente
Para pasar la salida como argumento, tiendo a usar un ciclo while ya que no estoy familiarizado con xargs.
fuente
El mejor comando para mí es:
fuente