есть процесс, который создает файлы каждые полчаса. Я хочу удалить файлы старше 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

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

1 ответ1

0

В 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)) ...

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