如何在 Linux 上递归搜索和删除目录
在我们之前的一篇文章中,我们解释了如何找出 Linux 文件系统上消耗最多磁盘空间的顶级目录和文件。如果您发现此类目录不再包含重要文件和子目录(例如旧备份、下载等),则可以删除它们以释放磁盘空间。
另请阅读:10 个有用的 du(磁盘使用情况)命令,用于查找文件和目录的磁盘使用情况
这个简短的教程描述了如何在 Linux 文件系统中递归地查找和删除目录。
为了达到上述目的,您可以使用以下语法将 find 命令与 rm 命令结合使用。这里,末尾的 +
符号可以同时读取多个目录。
find /start/search/from/this/dir -name "dirname-to-delete" -type d -exec /bin/rm -rf {} +
注意:您必须小心使用rm命令,因为它是Linux中最危险的命令之一:您可能会意外删除关键系统目录,从而导致系统故障。
在下面的示例中,我们将搜索名为 files_2008 的目录并递归删除它:
$find ~/Downloads/software -name "files_2008" -type d -exec /bin/rm -rf {} +
您还可以使用find和xargs;在以下语法中,-print0
操作允许在标准输出上打印完整目录路径,后跟空字符:
find /start/search/from/this/dir -name "dirname-to-delete" -type d -print0 | xargs -0 /bin/rm -rf "{}"
使用上面相同的例子,我们有:
find ~/Downloads/software -name "files_2008" -type d -print0 | xargs -0 /bin/rm -rf "{}"
最后但并非最不重要的一点是,如果您担心数据的安全性,那么您可能需要学习 3 种在 Linux 中永久安全地删除“文件和目录”的方法。
不要忘记阅读更多有关 Linux 中文件和目录管理的有用文章:
- fdupes – 在 Linux 中查找和删除重复文件的命令行工具
- 如何使用“FSlint”工具在 Linux 中查找并删除重复/不需要的文件
- 删除目录中除一个或少数带扩展名的文件之外的所有文件的 3 种方法
在本文中,我们向您展示了如何在 Linux 上递归查找和删除目录。如果您有任何问题或想要添加到此主题的额外想法,请使用下面的评论部分。