Я использую эту команду для удаления файлов и папок старше 150 дней.
find /media/Server/VPS/dailySQL/* -mtime +140 -exec rm -rf {} \;
Проблема в том, что я получаю сообщение об ошибке, как показано ниже
find: `/media/May-08-Sat-2010': No such file or directory
find: `/media/May-11-Tue-2010': No such file or directory
find: `/media/May-12-Wed-2010': No such file or directory
find: `/media/May-13-Thu-2010': No such file or directory
find: `/media/May-14-Fri-2010': No such file or directory
это почему
Потому что вы удаляете каталоги, а затем пытаетесь в них спуститься. Добавить -prune
к концу.
Попробуй это:
$ find /media/Server/VPS/dailySQL/ -mtime +140 | xargs rm -rf
Проблема с парой предложенных предложений заключается в том, что если какой-либо из файлов / каталогов имеет специальные символы, они не будут удалены. Выполнение -exec в строках отправителей действительно отнимает много времени, а лучшая эффективность достигается за счет передачи имен в xargs и вызова rm / rmdir как можно реже.
touch /media/Server/VPS/dailySQL/.saver
find /media/Server/VPS/dailySQL -type f -mtime +140 -print0 | xargs -0 rm -f >/dev/null 2>&1
find /media/Server/VPS/dailySQL -depth -type d -print0 | xargs -0 rmdir >/dev/null 2>&1
Вторая строка удаляет все старые файлы. Я помещаю файл в каталог верхнего уровня, чтобы спасти его от разрушения, в первую строку, и, наконец, вы просматриваете каталоги в глубину и просто пытаетесь rmdir. Если что-то еще присутствует, rmdir завершится ошибкой. Сначала необходимо удалить пустые подкаталоги перед попыткой удаления данного каталога.
Наконец, обратите внимание на -print0 и параметр -0 в xargs. Это позволяет правильно обрабатывать файлы, содержащие пробелы или другие метасимволы. Эта функция доступна в большинстве систем Linux, с которыми я сталкивался в последнее время.
Это тип сценария, который я использовал для удаления элементов / tmp и / var / tmp.
наслаждаться