Linux находит команды для отображения файлов старше 7 дней - без использования метки времени

302
Aditya

есть процесс, который создает файлы каждые полчаса. Я хочу удалить файлы старше 7 дней.

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

Команда:

find <file_path> -mtime +6 -name 'sample_file01*.txt' -delete 

Если я выполню эту команду 09-11-2018 в 11:30, она удалит файлы 02-11-2018 11:00 и раньше. Я просто хочу удалить все файлы 02-11-2018, а также.

Должен ли я использовать другую команду или модификацию, требуемую в приведенной выше команде find

Спасибо адитья

0

1 ответ на вопрос

0
AFH

В Ubuntu 18.04 findесть -daystartопция, которая позволяет вам делать то, что вы хотите:

find <file_path> -daystart -mtime +5 -name 'sample_file01*.txt' -delete 

Вам нужно уменьшить количество дней на один для нужного вам диапазона.

Если у вас нет этой опции (например, в OSX), вы можете использовать -mmin:

secsnow=$(date +%s) minstoday=$(($secsnow%86400/60)) minsago=$((5*1440+$minstoday)) find <file_path> -mmin +$minsago -name 'sample_file01*.txt' -delete 

Я показал это поэтапно, так что арифметика ясна, но все это может быть сделано с одним арифметическим выражением в качестве параметра:

... -mmin $(($(date +%s)%86400/60+5*1440)) ... 
Спасибо AFH, с помощью '-daystart' работал. Очень полезно. вы спасли меня ;) Aditya 6 лет назад 0

Похожие вопросы