网站搜索

如何在 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 {} + 

您还可以使用findxargs;在以下语法中,-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 中文件和目录管理的有用文章:

  1. fdupes – 在 Linux 中查找和删除重复文件的命令行工具
  2. 如何使用“FSlint”工具在 Linux 中查找并删除重复/不需要的文件
  3. 删除目录中除一个或少数带扩展名的文件之外的所有文件的 3 种方法

在本文中,我们向您展示了如何在 Linux 上递归查找和删除目录。如果您有任何问题或想要添加到此主题的额外想法,请使用下面的评论部分。