Неправильная логика или есть метод получше?

#bash #unix

#bash #unix

Вопрос:

Я пытаюсь удалить файл 12-часовой давности, только все, что было более 12 часов назад, я просто хочу добавить.

 find . -name "forum*.sql" -mmin  600 -mmin -780 -delete
  

Есть ли что-то вроде -mmax, которое я должен определить?

Комментарии:

1. Значение min в mmin означает минуту, а не минимум.

Ответ №1:

Извините, но мне тоже показалось, что ваше описание немного сложно разобрать.

Вот код, который удалит файлы, которые точно были созданы / изменены 12-13 часов назад. Старые файлы и более новые файлы остаются на месте.

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

 # currentTime=201104272232

TwelveHrsBefore=201104271032
ThirteenHrsBefore=2001104270932

# make some zero files with date/time range for what is to be deleted.
touch -t ${TwelveHrsBefore} upperLimit.tmpFile
touch -t ${ThirteenHrsBefore} lowerLimit.tmpFile

find . -name "forum*.sql" -newer lowerLimit.tmpFile -a ! -newer upperLimit.tmpFile
# when the above is producing the list of files you want to delete,
# append "| xargs /bin/rm -i" to the end of the find command
# to delete the files

# cleanup your tmp files   
rm lowerLimit.tmpFile upperLimit.tmpFile
  

-newer ... -a ! -newer ... Может быть неприятно поступать правильно. Я слегка протестировал это сегодня И в прошлом использовал эту технику для производственных заданий, но у меня нет доступа к этому коду, чтобы рассмотреть, что было более сложной проблемой, чем этот пример.

Я надеюсь, что это поможет.