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.