Я пишу ниже команду, чтобы удалить все файлы старше 7 дней, но она не работает:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
Как я могу удалить эти файлы?
command-line
delete
find
rm
Малихэ Пакьяри
источник
источник
name
и'*.gz'
.Ответы:
Как заметил @Jos, вы пропустили пробел между
name
и'*.gz'
; также для ускорения использования команды-type f
возможности запуска команды на F Īles только.Таким образом, фиксированная команда будет:
Объяснение:
find
: Команда Unix для нахождения F ILES / d irectories / л чернил и т.д./path/to/
: каталог для начала поиска.-type f
: только найти файлы.-name '*.gz'
: список файлов, который заканчивается на.gz
.-mtime +7
: учитывать только те, у которых время модификации старше 7 дней.-execdir ... \;
: для каждого найденного результата выполните следующую команду в...
.rm -- '{}'
: удалить файл;{}
часть, где результат находка получает подставляется из предыдущей части.--
означает, что в конце параметров команды исключается ошибка запроса для тех файлов, которые начинаются с дефиса .В качестве альтернативы используйте:
От человека найти :
Что немного более эффективно, потому что это составляет:
в отличие от:
как в
-exec
методе.Альтернативная и более быстрая команда использует
+
терминатор exec вместо\;
:Эта команда будет выполняться
rm
только один раз в конце, а не каждый раз, когда файл будет найден, и эта команда почти такая же быстрая, как при использовании-delete
опции, как в современной версииfind
:источник
-delete
в конце? Зачем связываться с+
или\;
?Будьте осторожны, удаляя файлы с помощью find. Запустите команду с -ls, чтобы проверить, что вы удаляете
find /media/bkfolder/ -mtime +7 -name '*.gz' -ls
, Затем вытащи команду из истории и добавь-exec rm {} \;
Ограничьте урон, который может сделать команда поиска. Если вы хотите удалить файлы только из одного каталога,
-maxdepth 1
то при поиске опечатка не сможет пройти по подкаталогам или выполнить поиск по всей системе/media/bkfolder /
.Другие ограничения, которые я добавляю, - это более конкретные аргументы имени, такие как
-name 'wncw*.gz'
добавление времени новее-mtime -31
и цитирование искомых каталогов. Это особенно важно, если вы автоматизируете очистку.find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;
источник