9 我正在尝试做类似的事情 ls -t | head -n 3 | xargs -I {} tar -cf t.tar {} 来归档最后3个修改过的文件,但最终每个文件分别运行tar命令,最后我剩下一个tar文件,其中包含3个文件中的最后一个(按它们的顺序)。我知道我没有正确使用'xargs',但是搜索没有帮助;我发现也不起作用的示例。甚至更简单的命令 ls | xargs -I {} tar -cf t.tar {} 最后以一个tar文件结尾,该文件仅包含该目录中的一个文件。 linux ls tar xargs — 奥利吉洛 source
8 ls -t | head -n 3 | xargs tar -cf t.tar 为我工作。您是否需要设置-I标志的原因? — 大卫·金 source 我从来没有尝试过这种方法。非常感谢!但是,如果我真的想通过-I传递它们怎么办?有没有办法正确格式化呢? — oligilo 2015年 如果要使用该-I标志,则应使用其他内容{}代替replacestring。例如ls -t | head -n 3 | xargs -I foo tar -cf t.tar foo — 大卫·金 我做到了,但是得到的结果是相同的:只有最后一个文件,或者等效地,它为每个项目分别运行tar命令。 — oligilo 2015年 在xargs手册页中进一步阅读之后…… -I意味着-L 1有效地意味着对每1行输入运行以下命令,这就是为什么您看到自己的结果。 — 大卫·金 啊,我明白了;非常感谢你的帮助; 好几天困扰着我。我真的很感激。 — oligilo
0 根据这篇文章,最好使用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 — 朱利安 source