删除所有子目录中匹配的目录

删除所有子目录中匹配的目录

如何run-*.achilles在 Linux 下删除所有子目录中的所有目录?

我试过了find /path -name run-*.achilles -type f -delete,但是没有用。

答案1

这里有几个问题:

  1. 您应该引用*以防止 shell 全局化。
  2. -type f告诉find您想要文件。
  3. find -delete不会删除非空目录。请参阅此问题.根据其中一个答案调整解决方案:

    find /path -path '*/run-*.achilles/*' -delete
    find /path -type d -name 'run-*.achilles' -empty -delete
    

这并不完美,第一行会匹配.../run-a/b.achilles/...。我认为。此命令应该匹配得更好:

find /path -type d -name 'run-*.achilles' -exec rm -rf {} +

它使用rm -rf,所以要小心使用。

相关内容