![如何删除所有子目录中具有给定名称的所有文件?](https://linux22.com/image/42123/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%85%B7%E6%9C%89%E7%BB%99%E5%AE%9A%E5%90%8D%E7%A7%B0%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想删除我的主目录的所有子目录中具有给定名称的所有文件。
我试过:
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>
与往常一样,请在执行之前确保任何脚本的准确性,并始终准备好备份,以防出现问题。