
Wie kann ich find
Dateien auswählen, die geschrieben und in der letzten Minute nicht geändert wurden?
Ich weiß, dass ich es auch andersherum machen kann, also mit nach Dateien suchen kann, die in den letzten 60 Sekunden geändert wurden -mtime -60s
, aber ich möchte die Dateien, die in den letzten 60 Sekunden nicht geändert wurden.
Ich verwende Linux und erhalte diesen Fehler, wenn ich Sekunden verwende:
find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'
Antwort1
Verwendenfind /path -type f -mtime +60s
Das -
Zeichen vor den Ziffern ist kein normaler „Argumentstrich“, sondern bedeutet „weniger als“. +
dann ist „mehr als“.
Aus man find
:
Bei allen Primärzahlen, die ein numerisches Argument annehmen, kann der Zahl ein Pluszeichen („+“) oder ein Minuszeichen („-“) vorangestellt werden. Ein vorangehendes Pluszeichen bedeutet „mehr als n“, ein vorangehendes Minuszeichen bedeutet „weniger als n“ und keines von beiden bedeutet „genau n“.
Es ist zu beachten, dass fürgenau n, die Zeit wird gerundet. 1
(1 Tag) bedeutet also nicht 86400 Sekunden.
Antwort2
find . -type f -mmin +1
Beispiel
$ ls *
four.txt one.txt three.txt two.txt
$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt
Antwort3
Der zweite -
ist-mtime -60s
nichtein Optionentrennzeichen.
-mtime
ist eine Option, gefolgt von einemOptionsargument. Das Optionsargument ist -60s
, und das -
darin ist Teil des Optionsarguments selbst,nichtein Optionstrennzeichen. Es bedeutet „weniger als 60 Sekunden“. Optionsargumente 60s
und +60s
bedeuten „gleich 60 Sekunden“ bzw. „größer als 60 Sekunden“.
Das Apple MacOS-Handbuch und das FreeBSD-Handbuch erwähnen die Präfixe +
und -
an genau einer Stelle und vergessen, irgendwo zu erklären, was sie bedeuten. Das hier sind sie.
(Interessanterweise enthält das GNU-Infohandbuch für GNU find
dieselbe Auslassung. Allerdings find
unterscheidet sich die Syntax von GNU für Zeiten etwas von der find
Syntax von BSD und MacOS.)
Weiterführende Literatur
- Apple Inc. (24.02.2008).
find
Handbuchseite für MacOS 10. MacOS 10-Entwicklerbibliothek. find
(1). 17.03.2010. Allgemeines FreeBSD-Befehlshandbuch. FreeBSD-Projekt.
Antwort4
In Unix-Systemen folgte auf -mtime früher ein +/-, gefolgt von einer Zahl und anschließend den Zeiteinheiten. [+-]nn[dms]
Linux verwendet mtime für Tage und mmin für Minuten, aber es scheint keine Sekundenoption zu geben und es wird kein Zeiteinheitenspezifizierer verwendet. Das + oder - bezieht sich immer noch auf größer oder kleiner als die Zeit und ist kein Optionsargument, wie oben erwähnt.
Sie könnten -mmin 1 verwenden, aberhttps://unix.stackexchange.com/questions/238738/find-files-newer-than-15-seconds-but-older-than-2-secondsbespricht den allgemeinen Umgang mit Sekunden.