如何删除包含特定文件且不包含其他文件的所有子文件夹

时间:2014-01-13 14:10:30

标签: linux find rm

我想删除包含文件core.properties.unloaded不包含文件core.properties的工作目录的所有直接子文件夹。我知道这必须是findrm的组合。但如何结合?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

像这样开始

$ find . -name "*"
.
./dir1
./dir1/core.properties.unloaded
./dir2
./dir2/core.properties
./dir3
./dir3/core.properties
./dir3/core.properties.unloaded

我跑了

for i in `find -mindepth 2 -maxdepth 2 -name "core.properties.unloaded" | awk -F'/' '{print $2}'`
do
  if [ ! -f "$i"/core.properties ]; then 
    rm -rf "$i"
  fi
done

然后find命令演示只删除了dir1(其他两个目录包含core.properties或不包含core.properties.unloaded) -

$ find . -name "*"

。    ./dir2    ./dir2/core.properties    ./dir3    ./dir3/core.properties    ./dir3/core.properties.unloaded