Znajdź plik, który ma 30 minut

12

Jak mogę znaleźć plik, który ma 30 minut /bin/ksh?

Aravind
źródło
4
Czy masz na myśli „czy jego zawartość zmieniono 30 minut temu”, czy „nie istniał, dopóki nie został utworzony 30 minut temu”? Z jakiego systemu operacyjnego korzystasz? Różne systemy operacyjne są dostarczane z różnymi wersjami find.
Mark Plotnick
@ Mark Plotnick Chcę znaleźć plik, który miał 30 minut
Aravind
Myślę, że on / ona oznacza, że został stworzony 30 minut temu . Jak gdyby np. Ktoś miał X lat, urodził się X lat temu.
erik

Odpowiedzi:

15

W systemie Linux nie ma śladu czasu utworzenia pliku. Możesz uzyskać dostęp tylko do:

  • czas ostatniej modyfikacji treści (kreacja liczy się jako modyfikacja kursu) mtime,
  • czas ostatniego dostępu atime,
  • ostatni raz modyfikacja meta-danych ctime.

Jeśli chcesz wyszukać pliki z testem opartym na tych czasach, find( man find) może ci pomóc.

Użyłbyś go w ten sposób, aby znaleźć plik, do którego dostęp uzyskano dokładnie 30 minut temu w bieżącym katalogu i jego podkatalogach:

find -amin 30

Zwykle warto użyć interwału, ponieważ podanie dokładnej liczby minut może być trudne:

find -amin +25 -amin -35

Spowoduje to znalezienie plików, do których uzyskano dostęp ponad 25, ale mniej niż 35 minut temu.

A jeśli jesteś zainteresowany tylko w czasie modyfikacji a nie w dostępie (tj czytać) Czas wymienić -aminz -mmin.

lgeorget
źródło
nie chcesz atime. atime to czas dostępu.
ctrl-alt-delor
@richard OP nie sprecyzował, co miał na myśli, więc ... W każdym razie ja mtimetakże w odpowiedzi
lgeorget
1
@ lgeorget, gdy -mtime 30go używam , wyświetlał pliki w wieku 30 dni.
Aravind,
@ user2910201 Ups głupie mnie. Xtimeopcje dotyczą dni, a Xminopcje minut. Mój zły,
redaguję
2
@ user2910201, ale pamiętaj, że możesz korzystać Xtimez dowolnej rozsądnej jednostki czasu, na przykład 30mprzez trzydzieści minut lub 5dprzez pięć dni
lgeorget
3

Możesz użyć mtimedo tego:

find . -mmin 30    #exactly 30 minutes old
ryekayo
źródło
powie ci to pliki, które były createdlub modified30 minut wstecz
g4ur4v
@ g4ur4v, gdy -mmingo używam , pokazuje, że -mminnie jest prawidłową opcją
Aravind
Wypróbuj to:find /path -mtime +30m
ryekayo
Nie jestem pewien, dlaczego się nie rozpoznaje -mmin, szukałem wielu przykładów za pomocą tego polecenia ...
ryekayo
3

Bez GNU/BSD find

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

i wtedy find . -newer /reference/file

rozwiązanie podane przez Stéphane Chazelas

Aravind
źródło