Desejo pesquisar vários arquivos usando find e excluir todos eles usando -exec. Eu tentei

find ./ -type f -name fileA -o -name fileB -exec rm {} \; 

mas isso parece remover arquivos “fileB”, não fileAs.

Comentários

  • Ele também removerá quaisquer diretórios chamados " fileB ", aliás.
  • @Wildcard Não com rm direto (ele ' tentarei, mas falharei ).
  • @Kusalananda, ah, certo.

Resposta

-o também se aplica à ação, portanto, você precisa agrupar coisas:

find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \; 

A propósito, seu find a implementação também pode oferecer suporte a -delete:

find ./ -type f \( -name fileA -o -name fileB \) -delete 

Comentários

  • e se não ' t, provavelmente suporta -exec rm {} +

Resposta

Outra alternativa:

 WARNING: it is possible that due to funny characters in directory names it is possible that unintended files might be deleted. find ./ -type f \( -name fileA -o -name fileB \) -print | xargs rm -f 

Ou, se possível, para pegá-los arquivos com caracteres engraçados:

 NOTE: On some systems -print0 and -0 options are not available. But this would be the preferred and safer method) find ./ -type f \( -name fileA -o -name fileB \) -print0 | xargs -0 rm -f 

Comentários

  • Gosto de como você voltou quase um ano depois apenas para adicionar uma nota sobre os nomes dos arquivos, que ' é a dedicação. : D

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *