Найдите файл, которому 30 минут

12

Как я могу найти файл, которому 30 минут /bin/ksh?

Аравиндом
источник
4
Вы имеете в виду «изменилось ли его содержимое 30 минут назад» или «не существовало до тех пор, пока не было создано 30 минут назад»? Кроме того, какую операционную систему вы используете? Различные операционные системы поставляются с разными версиями find.
Марк Плотник
@ Марк Плотник: я хочу найти файл, которому было 30 минут
Аравинд
Я думаю, что он / она имеет в виду был создан 30 минут назад . Как будто, например, кому-то X лет, он / она родился X раз назад.
Эрик

Ответы:

15

В Linux нет отслеживания времени создания файла. Вы можете получить доступ только к:

  • время последнего изменения содержимого (создание считается как изменение) mtime,
  • время последнего доступа atime,
  • время последнего изменения метаданных ctime.

Если вы хотите искать файлы с тестом, основанным на этих временах, find( man find) может вам помочь.

Вы могли бы использовать его таким образом, чтобы найти файл, к которому обращались ровно 30 минут назад, в вашем текущем каталоге и его подкаталогах:

find -amin 30

Обычно вам нужно использовать интервал, поскольку может быть трудно указать точное количество минут:

find -amin +25 -amin -35

При этом файлы будут доступны более 25, но менее 35 минут назад.

И если вас интересует только время модификации, а не время доступа (т.е. чтения), замените -aminна -mmin.

lgeorget
источник
ты не хочешь времени atime - время доступа.
Ctrl-Alt-Delor
@ Ричард ОП не уточнил, что он имел в виду ... Во всяком случае, я mtimeтоже
добавил
1
@ lgeorget, когда я использую -mtime 30его, показывает файлы 30 дней.
Аравинд
@ user2910201 Ups глупо меня. Xtimeварианты для дней и Xminварианты для минут. Мой плохой, я редактирую ответ
lgeorget
2
@ user2910201 но учтите, что вы можете использовать Xtimeлюбую разумную единицу времени, например, 30mтридцать минут или 5dпять дней
lgeorget
3

Вы можете использовать mtimeдля этого:

find . -mmin 30    #exactly 30 minutes old
ryekayo
источник
это скажет вам файлы, которые были createdили modified30 минут назад
g4ur4v
@ g4ur4v, когда я использую -mminего, показ -mminнедопустим
Аравинд
Попробуйте это:find /path -mtime +30m
Ryekayo
Не уверен, почему он не распознает -mmin, я посмотрел много примеров с помощью этой команды ..
ryekayo
3

С вне GNU/BSD find

TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" /reference/file

а потом find . -newer /reference/file

решение, данное Стефаном Шазеласом

Аравиндом
источник