Linux находит и удаляет файлы, но перенаправляет имена файлов для удаления


Есть ли способ записать имена файлов в файл, прежде чем они будут удалены для ссылки позже, чтобы проверить, что было удалено.

find <PATH> -type f -name "<filePattern>" -mtime +1 -delete 
4 8

4 ответа:

Просто добавьте выражение -print к вызову find:

find <PATH> -type f -name "<filePattern>" -mtime +1 -delete -print > log
Я не уверен, что это печатает имя до или после того, как файл не связан, но это не должно иметь значения. Я подозреваю, что -delete -print разблокирует перед печатью, а -print -delete напечатает перед тем, как разблокирует.

Как сказал Уильям, вы можете использовать -print. Однако вместо -print > log можно также использовать флаг -fprint.

Вы бы хотели что-то вроде:

find <PATH> -type f -name "<filePattern>" -mtime +1 -fprint "<pathToLog>" -delete

Например, я использую это в скрипте:

find . -type d -name .~tmp~ -fprint /var/log/rsync-index-removal.log -delete

Вы можете использовать -exec и rm -v:

find <PATH> -type f -name "<filePattern>" -mtime +1 -exec rm -v {} \;

rm -v сообщит, что он удаляет.

С помощью чего-то вроде этого вы можете выполнить несколько команд в операторе exec, таких как log to file, rm file и любые другие, которые вам понадобятся

find <PATH> -type f -name "<filePattern>" -mtime +1 -exec sh -c "echo {} >>mylog; rm -f {}" \;