Como faço para registrar xargs -0 rm?

Como faço para registrar xargs -0 rm?

Tenho uma necessidade simples de localizar e excluir recursivamente arquivos de uma determinada extensão. Portanto, tenho uma sintaxe que encontrará e removerá os arquivos e os canalizará xargs -0 rm, mas não consigo criar um log dos arquivos que foram removidos.

O que tenho até agora:

find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm

Responder1

rmnormalmente fica silencioso ao excluir arquivos. Se você deseja criar um log mostrando os arquivos removidos, adicione a -vopção. Assim, substitua:

xargs -0 rm

com:

xargs -0 rm -v >log

Responder2

Você pode usá find-lo para excluir arquivos e, ao mesmo tempo, escrever seus nomes no stdout:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

Observação:A ordem -deletee -printas opções são importantes. A segunda opção só será aplicada se a primeira retornar verdadeiro, ou seja, se a primeira -deleteopção não puder excluir o arquivo, seu nome não será impresso no stdout. Se você colocar -printprimeiro, ele colocará o nome do arquivo em stdout, independentemente de -deleterealmente poder excluir o arquivo.

Nota 2: tive que escapar dos colchetes e da linha vertical para fazer o regex funcionar por padrão com findo utilitário do meu sistema. Alternativamente, você pode especificar -regextypeto posix-egrep, por exemplo. De qualquer forma, vale a pena tentar primeiro findo comando sem -deleteopção para verificar se ele encontra os arquivos corretamente:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

informação relacionada