1

一位同事向我展示了一种使用 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 的文件。

但这不是我得到的行为。

我如何形成这个简单的命令?

4

3 回答 3

5

我相信你想要:

xargs -a file.txt rm

xargs 的最后一个参数应该是您希望它在文件中的所有项目上运行的命令。

Lynch 提出的解决方案也是有效的,等效于这个解决方案。

于 2013-05-16T19:16:48.393 回答
3

试试这个命令: xargs rm < file.txt

xargs 获取输入中的每一行并将其附加到您指定的命令中。所以如果 file.txt 包含:

a
b

然后 xargs 将执行rm a b

于 2013-05-16T19:16:14.747 回答
2

除非 file.txt 真的很大,否则 xargs 是不必要的,这是等效的:

rm $(<file.txt)

和便携式(POSIX)。

于 2013-05-16T22:37:34.307 回答