Trova tutti i file più vecchi di un minuto


8

Come posso utilizzare findper selezionare i file che sono stati scritti e non modificati nell'ultimo minuto?

So di poterlo fare al contrario, trovare i file modificati negli ultimi 60 secondi -mtime -60s, ma voglio quelli che non sono stati modificati negli ultimi 60 secondi.

Uso Linux e ottengo questo errore se utilizzo secondi:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'

Risposte:


13

Uso find /path -type f -mtime +60s

Il -poco prima delle cifre non è un normale "trattino dell'argomento", ma significa "minore di". +allora è "più di".

Da man find:

Tutte le primarie che accettano un argomento numerico consentono al numero di essere preceduto da un segno più (`` + '') o da un segno meno (`` - ''). Un segno più precedente significa `` più di n '', un segno meno precedente significa `` meno di n '' e nessuno dei due significa `` esattamente n ''.

Va notato che per esattamente n il tempo è arrotondato. Quindi 1(1 giorno) non significa 86400 secondi.


2
A rigor di termini, +60non è l'opposto di -60, per lo stesso motivo minore di non è l'opposto di maggiore di : Entrambi escludono il valore esatto a cui si confrontano. Ma la tua domanda non indica esattamente quale comportamento desideri.
Daniel Beck

Questo non è esattamente lo stesso, da allora! ripristina la "query" originale. Ma concordato, l'OP non specifica ciò che vuole.
Karolos,

Il giorno dopo, l'OP ha dichiarato di trovarsi su Linux, non su Mac OS X. Se ciò avrebbe cambiato la risposta, è possibile aggiornarla?
Peter Mortensen,

1
Sì, questo non funziona su Linux. Almeno RHEL 5.6. La risposta di SiegeX di seguito funziona, tuttavia.
MattPark

2
Questo non funziona su CentOS. Come si suppone, funziona su Mac OS X
trante,

14
find . -type f -mmin +1

Esempio

$ ls *
four.txt  one.txt  three.txt  two.txt

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt

Non è più taggato con osx.
Peter Mortensen,

4

Il secondo -in non-mtime -60s è un delimitatore di opzioni.

-mtimeè un'opzione ed è seguito da un argomento di opzione . L'argomento opzione è -60s, e -in esso fa parte dell'argomento opzione stesso, non un delimitatore di opzione. Significa "meno di 60 secondi". Argomenti delle opzioni 60se +60smedia "uguale a 60 secondi" e "maggiore di 60 secondi", rispettivamente.

Il manuale di Apple MacOS e il manuale di FreeBSD menzionano i prefissi +e -esattamente in un unico posto e dimenticano di spiegare ovunque si trovino. Questo è quello che sono.

(Il manuale di GNU Info per GNU findha la stessa omissione, abbastanza interessante. Tuttavia, findla sintassi di GNU per volte è leggermente diversa dalla findsintassi BSD e MacOS .)

Ulteriori letture


1
È anche peggio che spiegarlo esattamente in un unico posto : tutte le altre opzioni si riferiscono al atimeformato dell'ora, ma ciò non spiega anche i prefissi . È una sezione separata a cui non si fa riferimento.
Daniel Beck

Infatti; e scoprirai che l'ho scritto io. Ho scritto "menzione" e "dimentica di spiegare ovunque". ☺
JdeBP,

Non volevo contraddirti, volevo solo sottolineare che esattamente un posto è anche il peggior posto possibile da un POV "sfogliamo solo la man page".
Daniel Beck

Ma non è spiegato esattamente in un posto. Non è spiegato in nessun posto. Per una serie di pagine di manuale che sono generalmente scritte e modificate abbastanza bene, nella mia esperienza, è un'omissione sorprendente.
JdeBP,

1
Eh! Questo perché conosci già magicamente la risposta e puoi connettere i due durante la lettura del documento, compilando ciò che non è effettivamente scritto. Le persone che non hanno (y) la nostra preconoscenza e stanno leggendo il manuale per scoprire devono chiedersi perché non c'è spiegazione di cosa sia un "modificatore" ovunque. ☺
JdeBP,

3

Dovresti essere in grado di usare

find . ! -mtime -60s

1
Richiede parentesi per me:find . !( -mtime -60s )
Der Hochstapler,

@OliverSalzburg: sul mio Mac, funziona bene senza parentesi (Darwin Kernel versione 11.2.0).
Karolos,

1

Nei sistemi Unix -mtime era seguito da un +/- seguito da un numero seguito da unità di tempo. [+ -] nn [DMS]

Linux usa mtime per giorni, mmin per minuti, ma non sembra esserci un'opzione di secondi e non usa un identificatore di unità di tempo. Il + o - fa ancora riferimento a maggiore o minore del tempo anziché essere un argomento di opzione come menzionato sopra.

È possibile utilizzare -mmin 1, ma /unix/238738/find-files-newer-than-15-seconds-but-older-than-2-seconds discute come gestire i secondi in generale .

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.