Hi Jens,
zuerst mal herzlich willkommen hier auf dem Forum !
Den Mist, den Du da im Netz findest, solltest Du auf keinen Fall blind verwenden, denn es ist gefährlich, die Ausgabe von ls weiter zu verarbeiten.
Natürlich, es ist verführerisch, weil ls die Dateien so schön sortiert. Aber wenn, dann musst Du die Ausgabe unbedingt gegen Sonder- und Leerzeichen sichern !
Dies geht notfalls mit der Option "-b", aber man muss unheimlich aufpassen, dass die Escapes auch im Rest der Pipe sauber erhalten bleiben.
Unter dieser, und nur unter dieser Bedingung könnte man die Ausgabe dennoch parsen.
Das große Problem ist, die Escapes sauber über den xargs hinüber zu retten. So einfach ist das nämlich nicht:
track@lucid:~/-test$ ls -ltb . | tail -n5
-rw-r--r-- 1 track track 2 2011-01-22 03:55 achdu\001schreck!
-rw-r--r-- 1 track track 2 2011-01-22 03:54 ich\ bin\nböse
-rw-r--r-- 1 track track 2 2011-01-22 03:54 zwei\ drei
-rw-r--r-- 1 track track 2 2011-01-22 03:54 hallo
-rw-r--r-- 1 track track 6 2000-01-01 00:00 test\ \ datei\nmit\ Gift\ ('Kopie").txt
track@lucid:~/-test$ ls -ltb . | awk '/^-/ { print substr($0, index($0,$8)) }' | tail -n5
achdu\001schreck!
ich\ bin\nböse
zwei\ drei
hallo
test\ \ datei\nmit\ Gift\ ('Kopie").txt
track@lucid:~/-test$ ls -ltb . | awk '/^-/ { print substr($0, index($0,$8)) }' | tail -n5 | xargs stat -c "[%n] %F"
xargs: unpassender einfache-Anführungsstrich; standardmäßig sind Anführungsstriche für xargs vorgesehen, es sei denn sie verwenden die Option -0
stat: Aufruf von stat für „achdu001schreck!“ nicht möglich: Datei oder Verzeichnis nicht gefunden
stat: Aufruf von stat für „ich binnböse“ nicht möglich: Datei oder Verzeichnis nicht gefunden
[zwei drei] reguläre Datei
[hallo] reguläre Datei
Du siehst: wenigstens die Sonderzeichen werden dabei geschlachtet. Und zusätzlich ist der awk- Filter auch nicht eindeutig, z.B. falls der Username und der Dateiname gleich sind.
Vor Zeiten hatten wir das auch schon mal ausführlich diskutiert. Ich kann ja mal gucken, ob mir dazu noch was neues einfällt.
LG,
track