递归查找目录并删除它

递归查找目录并删除它

我有一个目录 db-cache-db,/home/{USER}/public_html 下有很多目录。我知道有一种方法可以为此编写脚本,但我不知道从哪里开始或如何开始。

我尝试了以下方法,但没有成功

find /home -wholename 'db-cache-db' -exec echo "rm -rf" {} ';'

我需要使用 -type 和 -name 吗?

答案1

-wholename与 相同-path,并且匹配完整路径目录,例如/home/{USER}/public_html/db-cache-db,而不仅仅是名称,例如db-cache-db。由于您不使用通配符参数(例如*/db-cache-db),您将永远找不到任何东西。

请首先尝试以下操作,以确保您不会意外删除超出预期的内容:

find /home -name 'db-cache-db' -type d

如果这导致您想要删除的目录,请添加实际删除的最后一个参数:

find /home -name 'db-cache-db' -type d -exec rm -rfv {} \;

答案2

这样做并不安全:

find /home -name 'db-cache-db' -type d -exec echo rm -rf {} ';'

您可能会丢失许多想要保留的目录。

find /home -name 'db-cache-db' -exec echo "rm -rf" {} ';' > /home/tmp.shl

接下来阅读其中的内容,tmp.shl,确保一切安全。使用 find 执行您“编写”的脚本。

chmod +x /home/tmp.shl 
/home/tmp.shl

相关内容