如何删除所有子目录中具有给定名称的所有文件?

如何删除所有子目录中具有给定名称的所有文件?

我想删除我的主目录的所有子目录中具有给定名称的所有文件。

我试过:

rm -r file

在我的主目录中,但它不起作用,因为该目录中不存在该文件。

答案1

find . -name "filename" -delete

答案2

作为对@tante答案的阐述,您可能希望在删除这些文件之前确保使用的文件列表是正确的:

find <source_dir> -name <filename> -print

如果检查显示有效列表,则

find <source_dir> -name <filename> -delete

如果想要使用临时保存目录在多个目录中进行此操作,还有另一个选择:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

与往常一样,请在执行之前确保任何脚本的准确性,并始终准备好备份,以防出现问题。

相关内容