Como excluo todos os arquivos que contêm uma determinada string em um diretório no UNIX?

Como excluo todos os arquivos que contêm uma determinada string em um diretório no UNIX?

Encontrei vários exemplos que funcionam desde que não haja espaços nos nomes dos arquivos. Infelizmente, tenho espaços em meus nomes de arquivos (não é minha escolha, na verdade são eles que preciso remover).

Então, por exemplo, foi isso que pensei que funcionaria:

encontrar . -tipo f | grep ).MOV | xargs rm

porque quero excluir os arquivos como:

  • L112 (1).MOV
  • L113 (1).MOV
  • L113 (2).MOV
  • etc.

e eu quero manter os arquivos como

  • L112.MOV
  • L113.MOV
  • L114.MOV
  • etc.

Isso encontra os arquivos corretamente:

encontrar . -tipo f | grep).MOV

mas quando eu canalizo para rm, os espaços no nome do arquivo estragam tudo.

Qualquer ajuda seria muito apreciada.

Responder1


rm *\).MOV

Responder2

Diga xargspara usar novas linhas como delimitadores:

find . -type f | grep ).MOV | xargs -d'\n' rm

Melhor, faça finda correspondência e use -print0e xargs -0para permitirqualquercaractere nos nomes dos arquivos, mesmo \n!

find . -type f -name '*).MOV' -print0 | xargs -0 rm

Melhor ainda, basta findligar rmdiretamente.

find . -type f -name '*).MOV' -exec rm {} +

Melhor, pule rme faça finda exclusão.

find . -type f -name '*).MOV' -delete

Ou neste caso específico, quem precisa de toda a maquinaria pesada?

rm *\).MOV

Responder3

Experimente isto:

find . -name "*).MOV" -exec rm {} \;

Responder4

Na maioria das instalações Unix você pode indicar um espaço em um nome de arquivo prefixando-o com uma barra invertida. Então, por exemplo, tente isto:

mkdir blah
cd blah
touch file1
touch file2
touch "file 3"
touch "file 4"

Faça um "ls" e você verá isto:

arquivo 3 arquivo 4 arquivo1 arquivo2

Agora faça "ls *\ *" e você deverá ver tudo com um espaço:

arquivo 3 arquivo 4

Então talvez apenas um "rm *\ *" seja tudo que você precisa? Ou modifique ligeiramente essa expressão regular para atender às suas necessidades.

Espero que ajude!

informação relacionada