我有一个以 .txt 格式保存的文件列表(比如说叫做 list.txt),我想要删除其中列出的文件。我之前从来没有写过脚本,能否提供一个 shell 脚本 / 命令让我使用呢?我使用的是 bash shell。
我有一个以 .txt 格式保存的文件列表(比如说叫做 list.txt),我想要删除其中列出的文件。我之前从来没有写过脚本,能否提供一个 shell 脚本 / 命令让我使用呢?我使用的是 bash shell。
while read -r filename; do
rm "$filename"
done <list.txt
速度慢。
rm $(<list.txt)
如果参数过多,将会失败。
我认为它应该可以工作:
xargs -a list.txt -d'\n' rm
尝试使用这个命令:
rm -f $(<file)
list.txt
的文件名列表。显然,你没有。 :-) - Adam Lisslist.txt
中,则以下方法始终有效:while read name; do
rm "$name"
done < list.txt
list.txt
的文件,所以由于某种原因这给他造成了问题;-) - yamen为了在macOS上快速执行,其中xargs
自定义分隔符d
不可用:
<list.txt tr "\n" "\0" | xargs -0 rm
$(<foo)
替换$(cat foo)
以避免产生额外的进程(如果您是我,还可以避免打错字)。 - Adam Liss我今天刚好在寻找这个问题的解决方案,最终使用了一些答案和一些实用函数的修改版本。
// 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@)
}
printf "%s\n" $(<list.txt) | xargs -I@ rm @
*.ext
类型的项目,并且运行良好。
rm $(<list.txt)
更快,但是+1提到了它在参数数量上的限制。 - Tim Pote$(<list.txt)
和$(cat list.txt)
有什么区别?哪一个更好? - zozo