самый старый или самый новый файл в дереве каталогов и удаление каждого файла в интерактивном режиме
477
Schultz Hartmut
На шаге 1 я пытаюсь найти самый старый файл в дереве каталогов, который я решил, следуя этому вопросу .
Теперь я хочу использовать xargsдля интерактивного удаления из самых старых в новейшие.
Так как это find -type f -printf '%T+ %p\n' | sort | xargs -0 -d '\n' rm -iне работает. Я видел в другом посте, find . -type f -print0 | xargs -0 ls -rtно добавление xargsк нему не работает, к сожалению.
Обратите внимание, что это не проблема с разрешениями. Я использовал /usr/share/doc/sambaв качестве примера, чтобы избежать публикации моих реальных имен файлов.
Ища в Интернете, я не смог найти ни одного скрипта, который был бы рекурсивным (целое дерево), обрабатывал бы пустые символьные файлы, а также интерактивен. Итак, я сделал это. Это не будет обрабатывать все типы специальных символов. Так что любое улучшение будет принято.
-p, --interactive: Подскажите пользователю, нужно ли запускать каждую командную строку и читать строку из терминала. Запускайте командную строку, только если ответ начинается с y или Y.
-n max-args, --max-args=max-args: Используйте не более max-args аргументов в командной строке.
-d delim Элементы ввода завершаются указанным символом.
0
Ljm Dullaart
Единственные проблемные символы, которые я вижу в вашем скрипте - это "и новая строка. Вы не должны слишком беспокоиться о новой строке в имени файла.
Возможно, вы захотите использовать разные временные имена файлов, например, с $$именем в имени файла.
Это должно обрабатывать кавычки в вашем имени файла. (примечание: все еще есть некоторые проблемы со сценарием. Хотя это нормально делать в вашей домашней среде. И TMP в столицах не рекомендуется, но я все равно это делаю.)
Примечание: xargs -pне будет работать, если у вас есть имена файлов с пробелами.