Mit dem folgenden Befehl konnte ich alle Verzeichnisse relativ zum aktuellen Verzeichnis zusammen mit der Epochenzeit der letzten Änderung auflisten:
find . -exec stat -c '%n: %Y' {} \;
Die Ausgabe sieht ungefähr so aus:
.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809
Wie kann ich das "./" am Anfang jedes Eintrags entfernen und ein '/' hinzufügen, wenn es sich um ein Verzeichnis handelt?
Als Bonus wäre es schön, den ersten Eintrag „.“ zu entfernen, der nur den aktuellen Ordner angibt.
Prost
Antwort1
- Hinzufügen
-mindepth 1
, um loszuwerden,.
was Tiefe==0 ist - Alternative: Verwenden Sie
find *
anstelle vonfind .
- Dateien aus Ordnern trennen mit
-type d ... -or -type f ...
- Verwenden Sie
+
anstelle von ,\;
um mehrere Dateien an zu sendenstat
; es kann damit umgehen und ist viel schneller!
find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +
ABER...
Das brauchst du -exec stat
überhaupt nicht!
- Verwenden Sie
find
s Bultin,-printf
um das letzte Änderungsdatum auszudrucken (%Cs
entsprichtstat
's%Y
). -printf '%P'
anstelle von können Sie auch am Anfang jedes Dateinamens%p
entfernen ../
find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'
Ausgabe:
a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809