У меня есть несколько файлов в каталоге с разными именами, и я хочу удалить все, которые старше указанного времени.

Пример:

File1
File2
File3

File1 was made Mar 31 08:00
File2 was made Mar 31 08:01
File3 was made Mar 31 08:05

Я хочу удалить все, что было создано до 31 марта 08:04 в одном каталоге.

Также дата создания является последней измененной датой, которую они никогда не изменяют, они никогда не обновляются.

2 ответа2

4

Предполагая, что есть только обычные файлы и никаких забавных вещей, таких как подкаталоги или другие файлы, подобные объектам.

find -not -newermt "Mar 31 08:04" -delete

Чтобы увидеть, какие файлы будут удалены, сначала запустите без -delete .

-not -newermt означает поиск файлов, время модификации которых превышает заданную временную строку.

Строка времени анализируется, как инструмент date . Вы можете проверить свою временную строку следующим образом:

date -R -d "Mar 31 08:04"

вывод на мою систему:

Tue, 31 Mar 2015 08:04:00 +0200

Если date отклоняет вашу строку, то find -newermt .

Обратите внимание, что date (и, следовательно, find) также принимает некоторое выражение времени на естественном языке, например "2 недели назад" или "1 месяц назад".

Для получения дополнительной информации прочитайте справочную страницу find и date . Объяснение опции -newermt приведено в разделе -newerXY на странице руководства.

1

Просто, чтобы сделать историю полной, потому что, когда мы хотим удалить все файлы старше указанного времени в каталоге, то указанное указанное время лучше указывать, например, для двухнедельного или месячного возраста, вместо указания фиксированной даты. строка.

Если это так, позвольте мне представить готовый пакет Ubuntu - tmpreaper:

Описание: очищает файлы в каталогах по возрасту

Этот пакет предоставляет программу, которую можно использовать для очистки каталогов временных файлов. Он рекурсивно ищет каталог, отказываясь выполнять chdir() по символическим ссылкам, и удаляет файлы, к которым не было доступа в указанный пользователем промежуток времени. Вы можете указать набор файлов для защиты от удаления с помощью шаблона оболочки. Он не удалит файлы, принадлежащие процессу EUID, которые имеют очищенный бит w , если вы не попросите об этом, очень похоже на rm -f . `tmpreaper 'не удалит символические ссылки, сокеты, fifos или специальные файлы, если не предоставлена опция командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .