我正在尝试做类似的事情
ls -t | head -n 3 | xargs -I {} tar -cf t.tar {}
归档最后修改的 3 个文件,但最终会为每个文件单独运行 tar 命令,最后我留下一个 tar 文件,其中包含 3 个文件中的最后一个(无论顺序如何)。我知道我没有正确使用“xargs”,但搜索没有帮助;我发现一些例子也不起作用。即使是更简单的命令
ls | xargs -I {} tar -cf t.tar {}
最终得到一个仅包含该目录中的一个文件的 tar 文件。
答案1
ls -t | head -n 3 | xargs tar -cf t.tar
对我有用。您需要设置标志有什么原因吗-I
?
答案2
根据这个帖子,最好使用r
而不是c
,以防xargs
切碎输入,生成仅包含最后一个块的 tar 文件。所以更好的解决方案是:
rm -f t.tar 2>/dev/null # remove tar if there
ls -t | head -n 3 | xargs tar -rf t.tar