Назад | Перейти на главную страницу

Как удалить файл по времени доступа в Linux?

Я хочу удалить файлы * .mp3, время доступа которых старше 10 минут в каталоге. Как я могу сделать? Спасибо.

Я бы использовал -amin переключиться с find команда:

find <path> -name "*.mp3" -amin +10 -exec rm -f {} \;

Из man find :

-amin n
              File was last accessed n minutes ago.

Для целей тестирования или отладки не запускайте rm команда, но ls -l вместо этого:

find <path> -name "*.mp3" -amin +10 -exec ls -l {} \;

редактировать

Я просто хотел сказать пару слов о -delete опция: эта опция автоматически включает -depth вариант.

Положив -delete сделаю find попробуйте удалить все, что ниже указанной начальной точки. Чтобы избежать неприятных сюрпризов, я бы явно указал -depth вариант.

Поскольку я не знаю дерево папок / файлов OP, я не буду предлагать ему использовать -delete вариант в одиночку. Мне кажется, что я немного потерял сознание.

По крайней мере, я бы посоветовал:

find <path> -maxdepth 1 -name "*.mp3" -amin +10 -delete

Предполагая, что достаточно актуальный find команда: find /path/to/mp3/files -amin +10 -delete. Я бы, конечно, запустил его без флага «-delete» в первый раз, чтобы убедиться, что вы удаляете то, что, по вашему мнению, удаляете.

Из find страница руководства:

   TESTS
       Numeric arguments can be specified as

       +n     for greater than n,

       -n     for less than n,

       n      for exactly n.

       -amin n
              File was last accessed n minutes ago.

Вы можете легко сделать это с помощью find

find . -amin +10 -iname '*.mp3' -exec rm {} \;