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


21

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

我试过了:

rm -r file

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

Answers:



10

为了详细说明@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>

与往常一样,请在执行之前确保所有脚本的准确性,并在发生问题时始终准备好备份。


3
总是用双引号引起来的变量替换,否则您的命令将不适用于包含某些特殊字符(空格,通配符和反斜杠)的文件名。
吉尔斯(Gilles)2010年

@Gilles-是的,感谢您更新并确保此答案正确。
韦恩
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.