Como excluo arquivos em um diretório e subdiretórios, mas não nas pastas?

5

Como excluo arquivos em um diretório e subdiretórios, mas não nas pastas?

Eu preciso ser capaz de fazer isso na linha de comando do Linux.

Com rm ?

    
por reyes 14.10.2011 / 21:33

1 resposta

2

Tradicional find

Use find . Ele encontrará todos os arquivos (isto é, diretórios não ) na pasta atual. Se você quiser ter certeza de não excluir as coisas erradas, ligue primeiro.

find . -type f

Em seguida, você pode usar a opção exec para fazer algo com esses arquivos - nesse caso rm ing.

find . -type f -exec rm {} \;

find canalizado para xargs

Você também pode usar a saída find para alimentar xargs , o que levará os caminhos de arquivo como argumentos para um comando rm .

find . -type f -print0 | xargs -0 rm

A opção -print0 é necessária para evitar quebras de nomes de arquivos contendo espaço em branco. Geralmente, não use uma coisa dessas sem essa opção, é altamente insegura.

GNU find

O GNU find também possui uma opção delete . Isso é muito mais eficiente do que a maneira exec , já que não precisa criar um novo processo com rm . Também é mais seguro ao considerar caminhos de arquivo.

find . -type f -delete

O manual GNU para encontrar uma seção muito extensa sobre como excluir arquivos .

    
por 14.10.2011 / 21:37