Jak znaleźć pliki utworzone w ciągu ostatniej godziny w unixie

138

Jak znaleźć pliki utworzone w ciągu ostatniej godziny w unixie

Ankur
źródło

Odpowiedzi:

219

Jeśli katalog do przeszukania to srch_diralbo

$ find srch_dir -cmin -60 # change time

lub

$ find srch_dir -mmin -60 # modification time

lub

$ find srch_dir -amin -60 # access time

pokazuje pliki utworzone, zmodyfikowane lub udostępnione w ciągu ostatniej godziny.

korekta: ctime służy do zmiany czasu węzła (nie jestem pewien, popraw mnie)

sameer
źródło
2
To jest świetne i wszystko, ale te flagi nie istnieją w systemie Solaris find, którego używam. OP powiedział, że Unix i myślę, że to tylko Linux.
jiggy
13
Sztuczka polega na użyciu ujemnych wartości czasu! W podręczniku nie jest to takie oczywiste.
sphakka
Odpowiedź @jiggy Ayush zawiera hack (oparty na -newer), który powinien działać na Solarisie.
David Moles
3
-cmin NIE jest czasem tworzenia, ale czasem zmiany! właśnie usunąłem mój katalog .config, ponieważ podczas testu nie zmienił się w ciągu ostatnich X minut, a kiedy zrobiłem rm, to było .... więc może edytuj to ...!
Badmaster
Nadal uważam, że pierwszy przykładowy komentarz wymaga korekty. „Czas zmiany” to stan pliku, a nie jego dane
KC Baltz
24

Systemy plików UNIX (ogólnie) nie przechowują czasu utworzenia. Zamiast tego jest tylko czas dostępu, czas modyfikacji (danych) i czas zmiany (i-węzła).

To powiedziawszy, findma -atime -mtime -ctimepredykaty:

$ człowiek 1 znaleźć
...
-ctime   n
        Podstawowy będzie oceniał jako prawdziwy, jeśli czas ostatniej zmiany
        informacje o statusie pliku odjęte od czasu inicjalizacji,
        podzielone przez 86400 (z odrzuconą resztą) to n.
...

W ten sposób find -ctime 0znajduje wszystko, dla czego i-węzeł się zmienił (np. Obejmuje tworzenie plików, ale liczy również liczbę linków i uprawnienia oraz zmianę rozmiaru pliku) mniej niż godzinę temu.

ephemient
źródło
86400 sekund to dzień , a nie godzina. Zatem argument do -ctimeetc jest w jednostkach dni, a nie godzin.
Gaylon
11

sprawdź ten link i pomóż sobie.

podstawowy kod to

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg
ayush
źródło
Dzięki, jednak spowoduje to wyszukanie tylko t.tmp. Co jeśli chcę znaleźć wszystkie pliki utworzone w ciągu ostatniej godziny.
Ankur
2
Ankur: utworzy tymczasowy plik t.tmp i ustawi czas jego utworzenia na 2 godziny temu ... potem przeszuka w obecnym katalogu wszystkie pliki, które zostały utworzone po t.tmp czyli w ciągu ostatnich 2 godzin ..
ayush
4
fajne!! Chociaż pierwsze polecenie nie jest konieczne. touchtworzy plik, jeśli jeszcze nie istnieje.
Amir Uval,
6

find ./ -cTime -1 -type f

LUB

find ./ -cmin -60 -type f

gwecho huang
źródło
3
sudo find / -Bmin 60

Ze manstrony:

-Bmin n

Prawda, jeśli różnica między czasem utworzenia i-węzła pliku a jego finduruchomieniem, zaokrąglona w górę do następnej pełnej minuty, wynosi n minut.

Oczywiście możesz chcieć skonfigurować trochę inaczej, ale to podstawowe wydaje się najlepszym rozwiązaniem do wyszukiwania dowolnego pliku utworzonego w ciągu ostatnich N minut.

sudon't
źródło
find (GNU findutils) 4.6.0nie ma -Bpredykatu
blockloop
-1

Sprawdź ten link, aby uzyskać więcej informacji.

Aby znaleźć pliki utworzone w ciągu ostatniej godziny w bieżącym katalogu, możesz użyć -amin

odnaleźć . -amin -60 -typ f

Spowoduje to znalezienie plików utworzonych w ciągu ostatniej godziny.

Jamre Ludhi
źródło
źle: -amin sprawdza czas ostatniego dostępu
vboerchers