Digamos que eu tenho uma árvore de diretórios como esta:
FOLDER:
file1
file2
file3
Subfolder1:
file1
file2
Subfolder2:
file1
file2
Se eu usasse rm -r FOLDER/*
, tudo em FOLDER seria excluído, incluindo subdiretórios. Como posso excluir todos os arquivos na pasta e em seus subdiretórios sem excluir os diretórios reais?
fonte
Se a sua versão do
find
não suportar,-delete
você pode usar o seguinte para excluir todos os arquivos no diretório atual e abaixo.fonte
-exec rm {} +
seria mais rápido, especialmente se houver muitos arquivos.find . ! -type d -exec rm {} +
remove links sym também.find
não suporta-delete
, provavelmente também não suporta-exec ... {} +
. A maneira recomendada de lidar com isso éfind ... -print0 | xargs -r0 rm
(se alguém espera muitas correspondências em potencial).-exec ... {} +
é POSIX, mas-delete
não é. (Nem é-print0
, a propósito.) #find
implementações que não são POSIX suportadas,-print0
mas não-exec ... {} +
(não me lembro disso-delete
). Um estava no OS X, o outro no Solaris (alguns anos atrás, em um sistema atualizado de maneira muito conservadora). Você também pode substituir-print0
com-printf '%p\0'
. Enfim, este é o Ask Ubuntu e não o Unix e Linux, e o Ubuntu usa o GNU find desde sempre.