Erläuterung

Erläuterung

Ich habe den Namen einer Datei vergessen, die sich in einem Verzeichnis oder einem seiner Unterverzeichnisse befindet. Ich erinnere mich an die Dateierweiterung (.nb) und weiß ungefähr, wann sie erstellt wurde. Wie kann ich alle Dateien mit dieser Erweiterung im aktuellen Verzeichnis und den Unterverzeichnissen zusammen mit ihrem Erstellungsdatum auflisten? Ich verwende Mac OS X.

Antwort1

Der einfachste Weg dies zu tun ist mitzsh, das standardmäßig auf macOS installiert ist. SeineGlob-Qualifikationermöglicht Ihnen das Auswählen und Sortieren von Dateien nach Zeitstempel und anderen Metadaten. Zsh unterstützt keine Erstellungszeiten, aber Änderungszeiten und Inode-Änderungszeiten; eine davon stimmt wahrscheinlich mit der Erstellungszeit überein.

Dies listet die 100 ( [1,100]) aktuellsten ( om) regulären ( .) Dateien mit der .nbErweiterung im aktuellen Verzeichnis und seinen Unterverzeichnissen ( **/) auf:

zsh -c 'ls -ltr **/*.nb(.om[1,100])'

Hier werden Dateien aufgelistet, die vor 7 bis 14 Tagen geändert wurden:

zsh -c 'ls -ltr **/*.nb(.m+6m-14)'

Antwort2

Dies sollte Ihr gewünschtes Ergebnis erzielen.

find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort

Erläuterung

find . -type f -name '*.nb'Finde alle Dateien mit der Erweiterung .nb.

xargs stat -f '%c %N'Drucken Sie die Dateien mit dem Unix-Zeitstempel vorne aus.

sortordne es.

Antwort3

Für Bash (nicht Mac):

find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort

Suche alle Einträge vom Typ „Datei“ im aktuellen Verzeichnis und darunter, die dem Muster entsprechen

(-iname, um Groß- und Kleinschreibung zu ignorieren)

Leite es an xargs weiter

(-d '\n' ändert das Trennzeichen in einen Zeilenvorschub, um Leerzeichen in Dateinamen zuzulassen)

dann zu stat

(-c für Ausgabeformat %z = letzte Statusänderung %N Dateiname in Anführungszeichen)

und sortieren Sie die Ausgabe

Antwort4

find -name '*.nb' -exec ls -rtl {} +

Zeigt detaillierte Informationen zu allen Dateien an, die dem Muster entsprechen, und sortiert sie von der ältesten zur neuesten (Sie können von der neuesten zur ältesten gelangen, indem Sie die rOption aus dem lsBefehl entfernen).

„Am +Ende“ bedeutet, dass Sie den Befehl am Ende der Suche ausführen, anstatt ihn für jede Übereinstimmung auszuführen.

NOTIZ: dies funktioniert nur mit einer angemessenen Anzahl von Übereinstimmungen. Wenn die Befehlszeile zu lang ist, lswird sie in mehrere 's aufgeteilt ls, was zu mehreren sortierten Teilmengen führt, während die gesamte Liste nicht richtig sortiert wird (danke @Gilles und @rudimeier für den Hinweis).

verwandte Informationen