Dies ist eine rekursive Version (d. h. es findet die zuletzt aktualisierte Datei in einem bestimmten Verzeichnis oder einem seiner Unterverzeichnisse)
find /dir/path -type f -printf "%[email protected] %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1
Kurze Laien-Erklärung der Kommandozeile:
find /dir/path -type ffindet alle Dateien im Verzeichnis-printf "%[email protected] %p\n"druckt eine Zeile für jede Datei, in der%[email protected]ist die Float-Sekunde seit der Epoche 1970 und%pist der Dateinamenspfad und\nist das Zeilenumbruchzeichen- Weitere Informationen finden Sie unter
man find
|ist eine Shellpipe(sieheman bashAbschnitt zuPipelines)sort -nbedeutet, nach der ersten Spalte zu sortieren und das Token als numerisch statt als lexikographisch zu behandeln (sieheman sort)cut -d' ' -f 2-bedeutet, jede Zeile mitzu teilen Zeichen und dann alle Token beginnend mit dem zweiten Token zu drucken (sieheman cut)- HINWEIS:
-f 2würde nur das zweite Token drucken
- HINWEIS:
tail -n 1bedeutet, die letzte Zeile zu drucken (sieheman tail)
ls -Art | tail -n 1
Dadurch wird die zuletzt geänderte Datei oder das zuletzt geänderte Verzeichnis zurückgegeben. Nicht sehr elegant, aber es funktioniert.
Verwendete Flags:
-A listet alle Dateien außer . auf und ..
-r umgekehrte Reihenfolge beim Sortieren
-t nach Zeit sortieren, neueste zuerst
ls -t | head -n1
Dieser Befehl gibt tatsächlich die zuletzt geänderte Datei oder das Verzeichnis im aktuellen Arbeitsverzeichnis aus.