如何在文件中的文件名列表上执行命令?


Answers:


11

如果每行只有一个文件,则一种方法是:

tr '\n' '\0' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --

文件列表作为tr命令的输入提供,该命令将文件分隔符从换行符更改为空字节,并且该xargs命令读取输入时以空字节分隔的文件,并启动rm命令,并将文件附加为参数。


1
我还建议您使用rm --而不是just rm,这样以破折号开头的文件名就不会被视为rm参数。
artyom

伙伴没有用........ tr:更多操作数monu.txt' Try tr --help'了解更多信息。rm:缺少操作数请尝试使用rm --help获取更多信息。........这就是我所能看到的所有东西
monu

1
您是否可能错过了文件名前的<?
乔纳斯·柏林

根据@artyom的建议,我也对xargs命令进行了一些改进-添加-添加了-r,以确保如果没有要删除的文件,它不会运行rm。
乔纳斯·柏林

5

上面的答案很好,因为它在处理带有空格和“奇怪字符”的文件名时花了很长的时间。但是,如果文件名合理,那么最简单的方法就是(警告,bashism!):

rm $(< /the/file/with/names)

对于常规外壳:

rm `cat /the/file/with/names`
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.