如何按名称递归搜索目录并删除其中的所有常规文件

如何按名称递归搜索目录并删除其中的所有常规文件

我正在 AWS EC2 实例(RHEL 派生)中编写 bash 脚本,该脚本需要执行以下操作:

  1. 搜索名为的所有"_combined"目录${PROJECT_DIR}
  2. 删除所有这些目录中的所有常规文件 - 但不删除目录本身

执行此操作的最佳方法是什么?

答案1

所以,像

find "$PROJECT_DIR" -path "*/_combined/*" -type f

如果这看起来是正确的:

find "$PROJECT_DIR" -path "*/_combined/*" -type f -delete

当然,这将影响整个树中的所有常规文件,而不仅仅是_combined.

答案2

这将执行您所描述的操作。当你是当然它有效,将该-print子句替换为-delete

find "$PROJECT_DIR" -type d -name '_combined' -execdir find '_combined' -maxdepth 1 -type f -print \;

它的作用是搜索所有名为_combinedunder 的目录$PROJECT_DIR,并在每个目录中运行第二个find片段,该片段将删除找到的目录中的所有非目录。

相关内容