rm
é normalmente silencioso ao excluir arquivos. Se você deseja criar um log mostrando os arquivos removidos, adicione a opção -v
. Assim, substitua:
xargs -0 rm
com:
xargs -0 rm -v >log
Eu tenho uma necessidade simples de encontrar e excluir recursivamente arquivos de uma determinada extensão. Então, eu tenho a sintaxe que irá encontrar e remover os arquivos e canalizá-los em xargs -0 rm
, mas não consigo criar um log dos arquivos que foram removidos.
O que eu tenho até agora:
find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm
rm
é normalmente silencioso ao excluir arquivos. Se você deseja criar um log mostrando os arquivos removidos, adicione a opção -v
. Assim, substitua:
xargs -0 rm
com:
xargs -0 rm -v >log
Você pode usar o próprio find
para excluir arquivos e, ao mesmo tempo, escrever seus nomes na stdout:
find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile
Nota: A ordem das opções -delete
e -print
é importante. A segunda opção só será aplicada se primeiro retornar true, ou seja, se a primeira opção -delete
não puder excluir o arquivo, seu nome não será impresso para stdout. Se você colocar -print
primeiro, ele colocará o nome do arquivo como stdout, independentemente de -delete
poder realmente excluir o arquivo.
Note2 : Eu tive que escapar de parênteses e linha vertical para fazer o regex funcionar por padrão com o find
util do meu sistema. Como alternativa, você pode especificar -regextype
to posix-egrep
, por exemplo. De qualquer forma, vale a pena tentar primeiro o comando find
w / o -delete
para verificar se ele encontra corretamente os arquivos:
find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print