Hi Mitstreiter,
im Nachgang dieses Threads zur zeitlich sortierten Ausgabe von Dateien brüte ich über der Frage, wie man eine Ausgabe von ls -rtQ
an xargs
verfüttern kann.
Ja, ich weiß, das macht man eigentlich gar nicht. Aber in diesem Fall liefert ls
doch sehr viel bequemer die gesuchte, zeitlich sortierte Liste. Und man kann ls
mit der Option "-b" oder "-Q" ja auch schließlich anweisen, die Pfadnamen sauber zu escapen. Klar, das muss man dann schon machen.
Als Alternative wäre ja so etwas wie
stat *.mp3 --printf "%y %n\0" | sort -nz | ????? | xargs -0 cat -- > radio.mp3
möglich, aber das ist ja "von hinten durch die Brust ins Auge". Und man hat das Problem, wie man von einem Null-terminierten String einen Teil abtrennen kann. (cut / sed / awk tun sich damit jedenfalls schwer)
Also bräuchte man jetzt entweder ein Rezept, mit dem man einen korrekt escapeten String entweder direkt an xargs
verfüttern kann,
oder eine Methode, wie man diesen escapeten String in einen nicht-escapeten, Null-terminierten String umwandelt.
Die Direkt-Fütterung klappt auf jeden Fall so nicht:
track@lucid:~$ ls -rtQ -- .aa* | xargs -I[] cat [] cat: .aaa- test\nmit giftigem namen2: No such file or directory cat: .aaa- test\nmit giftigem namen1: No such file or directory cat: .aaa- test\nmit giftigem namen3: No such file or directory track@lucid:~$ ls -rtb -- .aa* | xargs -I[] cat [] cat: .aaa- testnmit giftigem namen2: No such file or directory cat: .aaa- testnmit giftigem namen1: No such file or directory cat: .aaa- testnmit giftigem namen3: No such file or directory
Wie kommt man dem Problem am besten bei ?
Danke erstmal fürs mitdenken.
track