Поиск неуправляемых файлов старше 6 месяцев

Поиск неуправляемых файлов старше 6 месяцев

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

find . -type f -mtime 183 -exec ls -latr {} \;

Как сделать так, чтобы это было 6 месяцев или больше?

решение1

-mtime 183предназначено для файлов, возраст которых, округленный до следующего 24-часового периода, равен 183, то есть для возрастов, находящихся в диапазоне от 182*24*3600 секунд (не включая их) до 183*24*3600 секунд (включительно) (где секунды — это секунды Unix, то есть имеющие переменную длительность, которая составляет 86400-ю часть земных суток, а не фиксированную длительность секунды по определению ISO. Таким образом, все дни составляют 86400 секунд, и нам не нужно учитывать високосные секунды).

С помощью -mtime +183вы получаете файлы, возраст которых, округленный до следующего 24-часового периода, строго больше 183, так что для возрастов строго больше 183*24*3600 секунд.

Обратите внимание, что 24-часовой период не обязательно совпадает сденьиз-за перехода на летнее время в некоторых регионах.

В некоторых findреализациях (FreeBSD, GNU) можно также использовать ! -newermt '6 months ago'. mtсравнивает mвремя модификации со tвременем, указанным в качестве аргумента.

Это даст файлы, измененные до того же дня месяца, того же часа 6 месяцев назад, но в случае GNU find(в отличие от FreeBSD) он не делает корректировку летнего времени (в часовых поясах, где применяется летнее время), то есть он дает вам информацию, как будто в часовом поясе UTC. Если сейчас 2016-07-01 13:00 (летнее время), FreeBSD findсообщит о файлах, которые были изменены в последний раз до 2016-01-01 13:00 (зимнее время), в то время как GNU findсообщит о файлах, которые были изменены в последний раз до 2016-01-01 12:00 (зимнее время). Также могут быть вариации, когда вызов происходит 29-го, 30-го или 31-го числа месяца, а месяц 6 месяцев назад не имеет такой даты.

решение2

Добавьте +перед значением дня. Из страницы руководства:

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

и

... When  find  figures  out
how  many  24-hour  periods  ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.

Хотя это относится к atimeтесту, то же самое относится и к тестам mtimeи ctime.

Связанный контент