Ich beginne mit einer Datei mit einer Liste von Hunderten von Dateien (vollständige Pfade) in zufälliger Reihenfolge. Ich möchte die Details der zehn letzten Dateien in dieser Liste auflisten. Das ist mein naiver Versuch:Bash: Auflistung von Dateien in Datumsreihenfolge, mit Leerzeichen in Dateinamen
$ ls -las -t `cat list-of-files.txt` | head -10
Das heißt, solange keine der Dateien mit Leerzeichen, aber nicht, wenn sie es tun, da diese Dateien werden aufgeteilt in die Räume und behandelt als separate Dateien funktioniert. Die Datei „Hallo Welt“ gibt mir:
ls: hello: No such file or directory
ls: world: No such file or directory
Ich habe versucht, zitiert die Dateien in der ursprünglichen Liste-of-Dateien Datei, aber das hier-Dokument teilt noch die Dateien an den Leerzeichen im Dateinamen auf, die Behandlung von Zitate als Teil der Dateinamen:
$ ls -las -t `awk '{print "\"" $0 "\""}' list-of-files.txt` | head -10
ls: "hello: No such file or directory
ls: world": No such file or directory
die einzige Art, wie ich dies zu tun denken kann, ist jede Datei einzeln ls und erstellen Sie eine Zwischendatei mit den Dateilisten und das Datum in einer sortierbare (xargs vielleicht mit) Reihenfolge als das erste Feld in jeder Zeile, dann sortieren Sie diese Zwischendatei. Das fühlt sich jedoch etwas umständlich und ineffizient an (Hunderte von ls Befehlen statt einer oder zwei). Aber das könnte der einzige Weg sein, es zu tun?
Gibt es eine Möglichkeit, "ls" eine Liste von Dateien zu verarbeiten, wo diese Dateien Leerzeichen enthalten könnten - es scheint wie es sollte einfach sein, aber ich bin ratlos.
Vielen Dank - ich habe ein paar Antworten hier, dass die Arbeit, und ich bin Marco Version. Ich bin mir sicher, dass die Xargs-Methode mit einigen Verbesserungen laufen könnte, und ich werde das längerfristig untersuchen. Alle helfen sehr geschätzt. – Jason