Shell命令/脚本,用于删除名称在文本文件中的文件

时间:2012-04-13 22:40:34

标签: file shell scripting delete-file

我有一个.txt文件中的文件列表(比如list.txt)。我想删除该列表中的文件。我以前没有做过脚本。有些人可以提供我可以使用的shell脚本/命令。我有bash shell。

7 个答案:

答案 0 :(得分:33)

while read -r filename; do
  rm "$filename"
done <list.txt

很慢。

rm $(<list.txt)
如果参数太多,

将失败。

我认为它应该有效:

xargs -a list.txt -d'\n' rm

答案 1 :(得分:10)

尝试此命令:

rm -f $(<file)

答案 2 :(得分:3)

如果文件名中包含空格,则其他答案都不起作用;他们会将每个单词视为单独的文件名。假设文件列表在list.txt中,这将始终有效:

while read name; do
  rm "$name"
done < list.txt

答案 3 :(得分:1)

以下内容应该有效,并且在您循环播放时为您留下空间。

编辑:请勿执行此操作,请参阅此处:http://porkmail.org/era/unix/award.html

for $(cat list.txt)中的文件;做rm $文件;完成

答案 4 :(得分:0)

要在macOS上快速执行,xargs自定义分隔符d不可用:

<list.txt tr "\n" "\0" | xargs -0 rm

答案 5 :(得分:0)

在linux上,您可以尝试:

printf "%s\n" $(<list.txt) | xargs -I@ rm @

就我而言,我的.txt文件包含*.ext类型的项目列表,并且运行良好。

答案 6 :(得分:0)

我今天只是在寻找解决方案,最终使用了一些答案和我拥有的一些实用功能的修改后的解决方案。

// This is in my .bash_profile

# Find
ffe () { /usr/bin/find . -name '*'"$@" ; } # ffe: Find file whose name ends with a given string

# Delete Gradle Logs
function delete_gradle_logs() {
   (cd ~/.gradle; ffe .out.log | xargs -I@ rm@)
}