Come trovare i file creati nell'ultima ora in unix


135

Come trovare i file creati nell'ultima ora in unix

Risposte:


213

Se il dir di ricerca è srch_dirallora o

$ find srch_dir -cmin -60 # change time

o

$ find srch_dir -mmin -60 # modification time

o

$ find srch_dir -amin -60 # access time

mostra i file creati, modificati o accessibili nell'ultima ora.

correzione: ctime serve per cambiare l'ora del nodo (non è sicuro, per favore, correggimi)


2
Questo è fantastico e tutto, ma questi flag non esistono su Solaris findche sto usando. OP ha detto Unix e penso che questi siano solo Linux.
jiggy,

12
Il trucco è usare valori di tempo negativi ! Non è così ovvio nella pagina man.
sphakka,

La risposta di @jiggy Ayush fornisce un trucco (basato su -newer) che dovrebbe funzionare su Solaris.
David Moles,

3
-cmin NON è l'ora di creazione ma cambia l'ora! ho appena cancellato la mia directory .config perché durante il test non è stato modificato negli ultimi X minuti e quando l'ho fatto rm lo era .... quindi forse modificalo ...!
Badmaster,

Penso ancora che il primo commento di esempio abbia bisogno di una revisione. "cambia ora" è lo stato del file, non i dati del file
KC Baltz

24

I filesystem UNIX (generalmente) non memorizzano i tempi di creazione. Vi sono invece solo i tempi di accesso, i tempi di modifica (dati) e i tempi di modifica (inode).

Detto questo, findha -atime -mtime -ctimepredicati:

$ man 1 trova
...
-ctime   n
        Il primario deve valutare come vero se l'ora dell'ultima modifica di
        informazioni sullo stato del file sottratte dal tempo di inizializzazione,
        diviso per 86400 (con ogni resto scartato), è n.
...

Quindi find -ctime 0trova tutto ciò per cui l'inode è cambiato (ad esempio include la creazione di file, ma conta anche il conteggio dei collegamenti e le autorizzazioni e la modifica della dimensione del file) meno di un'ora fa.


86400 secondi è un giorno , non un'ora. Quindi l'argomento di -ctimeetc è espresso in unità di giorni anziché in ore.
Gaylon

12

controlla questo link e poi aiutati.

il codice di base è

#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

Grazie, tuttavia, cercherà solo t.tmp. E se volessi trovare tutti i file creati nell'ultima ora.
Ankur

2
Ankur: creerà un file temporaneo t.tmp e imposterà il suo tempo di creazione su 2 ore fa ... dopodiché cercherà nella directory attuale tutti i file che sono stati creati dopo t.tmp, cioè nelle ultime 2 ore ..
ayush

4
freddo!! Sebbene il primo comando non sia necessario. touchcrea il file se non esiste già.
Amir Uval,


3
sudo find / -Bmin 60

Dalla manpagina:

-Bmin n

Vero se la differenza tra l'ora della creazione dell'inode di un file e l'ora è findstata avviata, arrotondata per eccesso al minuto intero successivo, è n minuti.

Ovviamente, potresti voler impostare un po 'diversamente, ma questo primario sembra la soluzione migliore per cercare qualsiasi file creato negli ultimi N minuti.


find (GNU findutils) 4.6.0non ha un -Bpredicato
blockloop

0

Dai un'occhiata a questo link per maggiori dettagli.

Per trovare i file creati nell'ultima ora nella directory corrente, è possibile utilizzare -amin

trova . -amin -60 -type f

Questo troverà i file creati con nell'ultima ora.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.