如何删除多个子目录中匹配的没有路径的文件名列表?
Delete_list.txt 可能包含(每个文件名是每行):
a.jpg
b.jpg
c.jpg
这些文件可能存在于多个子目录中。我想全部删除。我试过但没有成功:
for f in $(delete_list.txt); do find . -name "$f" -type f -delete ; done
第二次尝试
f in $(delete_list.txt); do find . -name "$f" -type f -exec rm -f {} \;
第三次尝试
while IFS= read -r file ; do rm -r -- "$file" ; done < delete_list.txt
第四次尝试
for f in $(delete_list.txt); do if [ -f $f ]; then rm $f; fi; done
在支持数组的 shell(如 bash)中,您可以将所有名称组合成一个
find
谓词仅当您确定它找到正确的文件时才更改
-print
为-delete
(或)。-print -delete
这对我有用。它正在删除所有子目录下给定文件中的所有匹配文件名。
但是,它非常缓慢。delete_list.txt 包含大约 100 个文件名,可在 25 万多个子目录下找到。