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


138

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

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)


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.


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

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,


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.


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.


źle: -amin sprawdza czas ostatniego dostępu
vboerchers
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.