Maneira otimizada de listar e excluir arquivos

Maneira otimizada de listar e excluir arquivos

Preciso listar e excluir arquivos .php, .xml. Para isso estou usando findo comando.

Listar : find . -type f -name \*.php -print0

Deletar : find . -type f -name \*.php -print0 | xargs -0 rm -r

Enquanto corro findduas vezes. É possível armazenar o resultado do primeiro comando e depois reutilizá-lo no segundo?

Obrigado.

Responder1

find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list

Supondo que você queira ver a lista antes de decidir excluí-los. Caso contrário, você pode simplesmente fazer:

find . -name '*.php' -type f -print -delete

(observe que -print0, -delete, -r, -0não são padrão, mas são suportados pela implementação GNU)

Lembre-se também de que, embora find -deleteseja relativamente seguro, na primeira solução, alguém pode renomear diretórios para links simbólicos para algumas áreas sensíveis entre o momento em que você executa o comando finde xargse fazer com que você exclua arquivos que não pretendia. Correr findduas vezes, a segunda vez -deleteevitaria isso.

Responder2

Como você precisa .phpde .xmlarquivos, o findcomando deve ser semelhante a:

find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +

As +instruções findpara usar rmapenas uma vez por bloco de arquivos. Se tivéssemos usado, \;teríamos executado um rmcomando para cada arquivo.

informação relacionada