一位同事向我展示了一种使用 rm 和 xargs 删除 .txt 中列出的文件名的绝妙方法——但我不记得他做了什么。
我跑了
echo | xargs -a file.txt
file.txt 包含在哪里
1
2
3
4
它打印了
1 2 3 4
我的逻辑说
rm | xargs -a file.txt
应该删除我创建的标题为 1 和 2 以及 3 和 4 的文件。
但这不是我得到的行为。
我如何形成这个简单的命令?
我相信你想要:
xargs -a file.txt rm
xargs 的最后一个参数应该是您希望它在文件中的所有项目上运行的命令。
Lynch 提出的解决方案也是有效的,等效于这个解决方案。
试试这个命令:
xargs rm < file.txt
xargs 获取输入中的每一行并将其附加到您指定的命令中。所以如果 file.txt 包含:
a
b
然后 xargs 将执行rm a b
除非 file.txt 真的很大,否则 xargs 是不必要的,这是等效的:
rm $(<file.txt)
和便携式(POSIX)。