it-swarm.com.de

Wie liste ich alle Dateien in einem Verzeichnis und in Unterverzeichnissen in umgekehrter chronologischer Reihenfolge auf?

Ich möchte etwas wie ls -t tun, habe aber auch die Dateien in Unterverzeichnissen enthalten. Das Problem ist jedoch, dass ich nicht möchte, dass die Ausgabe wie in ls -R formatiert wird.

[test]$ ls -Rt
b       testdir test

./testdir:
a

Ich möchte, dass es so formatiert wird, wie der Befehl find Dateien in Unterverzeichnissen anzeigt. Dh:

[test]$ find .
.
./b
./test
./testdir
./testdir/a

Aber was find nicht zu tun scheint, ist das Ergebnis chronologisch nach der letzten Aktualisierungszeit zu ordnen.

Wie kann ich also alle Dateien in einem Verzeichnis und in Unterverzeichnissen in dem Format auflisten, das find hat, aber in umgekehrter chronologischer Reihenfolge?

54
dan

Probier diese:

find . -type f -printf "%[email protected] %p\n" | sort -nr | cut -d\  -f2-
37
marco

ls -lR Dient zum Anzeigen aller Dateien, Verzeichnisse und Unterverzeichnisse im Ausgangsverzeichnis. ls -lR | more Dient zum Anzeigen aller Dateien in einem Datenfluss.

80
rashmi

Wenn die Anzahl der Dateien, die Sie anzeigen möchten, innerhalb des maximalen Argumentlimits liegt, können Sie Globbing verwenden, um das zu erhalten, was Sie möchten, mit Rekursion, wenn Sie Globstar-Unterstützung haben.

Für genau 2 Schichten tief verwenden: ls -d * */*

Mit Globstar verwenden Sie für die Rekursion: ls -d **/*

Das -d Argument zu ls weist es an, Verzeichnisse, die als Argumente übergeben wurden, nicht zu rekursiv zu behandeln (da Sie das Shell-Globbing verwenden, um die Rekursion durchzuführen). Dies verhindert, dass ls seine Rekursionsformatierung verwendet.

12
Parakleta

Versuchen find . -type d oder find . -type d -ls

3
Bobby
find -type f -print0 | xargs -0 ls -t

Nachteil: Funktioniert nur mit einer bestimmten Anzahl von Dateien. Wenn Sie sehr viele Dateien haben, benötigen Sie etwas Komplizierteres

3
yankee

versuche dies:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'
2
wfg5475

Der Befehl in Antwort von wfg5475 funktioniert ordnungsgemäß. Sie müssen nur eines hinzufügen, um nur Dateien in einem Verzeichnis und Unterverzeichnis anzuzeigen:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'

Eine Sache hinzugefügt: ^d, um alle Verzeichnisse aus der Auflistung der Ausgaben zu ignorieren

1
Pankaj Tiwari