Ich versuche so etwas zu tun
ls -t | head -n 3 | xargs -I {} tar -cf t.tar {}
Um die 3 zuletzt geänderten Dateien zu archivieren, wird der Befehl tar für jede der Dateien separat ausgeführt. Am Ende verbleibt eine TAR-Datei mit der letzten der 3 Dateien (in beliebiger Reihenfolge). Ich weiß, dass ich 'xargs' nicht richtig verwende, aber die Suche hat nicht geholfen. Ich finde Beispiele, die auch nicht funktionieren. Noch der einfachere Befehl
ls | xargs -I {} tar -cf t.tar {}
endet mit einer TAR-Datei, die nur eine der Dateien in diesem Verzeichnis enthält.
-I
Flag verwenden möchten, sollten Sie etwas anderes als{}
das Ersetzen verwenden. Zum Beispiells -t | head -n 3 | xargs -I foo tar -cf t.tar foo
-I
impliziert dies,-L 1
was effektiv bedeutet, dass Sie den folgenden Befehl für jede 1 Eingabezeile ausführen, weshalb Sie die Ergebnisse sehen, die Sie sind.Nach diesem Beitrag ist es besser , zu verwenden ,
r
stattc
, beixargs
Koteletts auf die Eingaben, eine tar - Datei nur den letzten Brocken enthält ergibt. Eine bessere Lösung wäre also:quelle