Estou tentando canalizar a grep
saída para rm
, mas gera coisas inúteis. É necessário algum switch rm
? Ou pode rm
ser fornecido um regexp diretamente?
ls | grep '^\[Daruchini'| rm
Operando rm: ausente Tente `rm --help 'para obter mais informações.
Respostas:
Você precisa usar
xargs
para transformar a entrada padrão em argumentos pararm
.(Cuidado com caracteres especiais nos nomes de arquivos; com o GNU grep, você pode preferir
)
Além disso, enquanto o shell não usa regexps, esse é um padrão simples:
(Enquanto isso, acho que preciso dormir mais.)
fonte
rm Dar*
, nãorm !(Dar*)
.zsh
^
modo (semelhante àbasg
!
coisa).| tr "\n" "\0"
antes da partexargs
. Vistos neste post: stackoverflow.com/questions/20307299/…Não analise a saída de
ls
.Aqui, é muito simples fazer com que o shell filtre os arquivos que você deseja. Observe que é o shell que está expandindo o padrão
Dar*
, não orm
comando. A expansão do padrão realizada pelo shell é chamada globbing .Em casos mais complexos, procure o
find
comandofonte
Se você deseja delimitar a saída
grep
por novas linhas em vez de espaço em branco, é possível especificar isso porxargs
meio da-d
opção(conforme descrito nesta pergunta)
fonte
Para passar a saída como argumento, costumo usar um loop while, pois não estou familiarizado com xargs.
fonte
O melhor comando para mim é:
fonte