Wie finde ich die letzten 10 geänderten Dateien

Wie finde ich die letzten 10 geänderten Dateien

Ich befinde mich im Stammordner und muss die letzten 10 geänderten Dateien nur dieses Ordners finden. Jedes Mal, wenn ich -mtime eingebe, wie mein Dozent sagte, erhalte ich 10 Tage. Ich brauche die letzten 10 geänderten Dateien, nicht die letzten 10 Tage. Ich habe versucht, -my time zu finden, my time wurde mit tail weitergeleitet. Ich erhalte eine lange Liste aller geänderten Dateien der letzten 10 Tage. Ich brauche nur die letzten 10 geänderten Dateien des Stammverzeichnisses.

Antwort1

ls -t | headsollte funktionieren, solange die Dateinamen keine Zeilenumbrüche enthalten.

ls -tsortiert nach Zeit, mit den neuesten Dateien zuerst. headBehält nur die ersten 10 Zeilen.

Wenn Sie weitere Einzelheiten wünschen, können Sie verwenden ls -lt. Dadurch wird jedoch eine zusätzliche Zeile mit der Gesamtgröße vorangestellt, sodass Sie benötigen ls -lt | head -n 11.

Wenn Sie versteckte Dateien einschließen möchten, können Sie verwenden ls -At | head. ( ls -A, oder --almost-allfür GNU ls: schließt versteckte Dateien außer .und ein ...)

Beachten Sie, dass Ihnen hierdurch die letzten 10 Dateien aller Art, einschließlich Verzeichnisse, und nicht nur normale Dateien angezeigt werden.

Antwort2

In zshfür die 10 regulären Dateien im aktuellen Arbeitsverzeichnis oder darunter, die zuletzt geändert wurden:

ls -ldt -- **/*(D.om[1,10])

In anderen Shells, aber vorausgesetzt, Sie verwenden ein aktuelles GNU-System:

find . -type f -printf '%T@:%P\0' |
  LC_ALL=C sort -zrn |
  LC_ALL=C sed -z 's/^[^:]*://;10q' |
  xargs -r0 ls -ltd --

Wenn Sie Dateien in Unterverzeichnissen nicht berücksichtigen möchten, entfernen Sie das **/in zshoder fügen Sie danach -maxdepth 1das to hinzu .find.

Um versteckte Dateien auszuschließen, entfernen Sie den DGlob-Qualifizierer in zshoder ändern Sie die findZeile wie folgt:

LC_ALL=C find . -name '.?*' -prune -o -type f -printf '%T@:%P\0' |

Oder wenn auch Dateien in Unterverzeichnissen ausgeschlossen werden:

LC_ALL=C find . -maxdepth 1 ! -name '.*' -type f -printf '%T@:%P\0' |

Diese machen keine Annahmen darüber, welche Zeichen oder Nicht-Zeichen die Dateipfade enthalten könnten.

verwandte Informationen