6

В чем разница с mtime - и + поскольку оба не возвращают нужные мне результаты?

Я ищу, чтобы удалить все файлы старше 5 дней:

 find /mnt/sdb1/tmp/ -type f -mtime +5 -exec ls {} \;
 find /mnt/sdb1/tmp/ -type f -mtime -5 -exec ls {} \;

Я изменил вывод на ls чтобы сравнить результаты.

2 ответа2

10

Из справочной страницы find :

    Numeric arguments can be specified as

   +n     for greater than n,
   -n     for less than n,
    n     for exactly n.

  -mtime n
          File's data was last modified n*24 hours ago.  See the comments for 
          -atime to understand how rounding  affects  the  interpretation  of
          file  modification times.

   -atime n
          File was last accessed n*24 hours  ago.   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.

Таким образом, -mtime +5 найдет те файлы, которые были последний раз изменены более 5 * 24 часов назад, и -mtime -5 найдет эти файлы, последние изменения которых были менее 5 * 24 часов назад. Чтобы удалить файлы старше 5 дней 1, вы должны сделать:

find /mnt/sdb1/tmp/ -type f -mtime +5 -exec rm {} \;

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


1 Учтите, что единица измерения здесь - сутки, 24 часа.Таким образом, возраст более 5 дней означает возраст не менее 6 дней, поскольку значение всегда округляется, а дробные части игнорируются.

1

-mtime +5 должен показывать вам все файлы, измененные за 5 дней и раньше (6, 7, ...), в то время как -5 должен показывать те, которые были изменены сегодня, до 5 дней назад.

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