Как мне зарегистрировать xargs -0 rm?

Как мне зарегистрировать xargs -0 rm?

У меня есть простая потребность рекурсивно найти и удалить файлы определенного расширения. Поэтому у меня есть синтаксис, который найдет и удалит файлы и передаст их в xargs -0 rm, но я не могу создать журнал удаленных файлов.

Что у меня есть на данный момент:

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

решение1

rmобычно молчит при удалении файлов. Если вы хотите создать журнал, показывающий удаленные файлы, добавьте опцию -v. Таким образом, замените:

xargs -0 rm

с:

xargs -0 rm -v >log

решение2

Вы можете использовать findего для удаления файлов и одновременно записи их имен в stdout:

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

Примечание:Порядок опций -deleteи -printважен. Вторая опция будет применена только если первая возвращает true, т. е. если первая -deleteопция не смогла удалить файл, то ее имя не будет выведено на stdout. Если вы укажете -printпервую, то она выведет имя файла на stdout независимо от того, -deleteдействительно ли удалось удалить файл.

Заметка 2: Мне пришлось экранировать скобки и вертикальную черту, чтобы регулярное выражение работало по умолчанию с findутилитой моей системы. В качестве альтернативы вы можете указать -regextype, posix-egrepнапример. В любом случае, стоит сначала попробовать findкоманду без -deleteопции, чтобы проверить, правильно ли она находит файлы:

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

Связанный контент