我继承了下面的结构,这是多年意大利面条代码的结果......
gallery
├── 1
│ ├── deleteme1
│ ├── deleteme2
│ ├── deleteme3
│ └── full
│ ├── file1
│ ├── file2
│ └── file3
├── 2
│ ├── deleteme1
│ ├── deleteme2
│ ├── deleteme3
│ └── full
│ ├── file1
│ ├── file2
│ └── file3
└── 3
├── deleteme1
├── deleteme2
├── deleteme3
└── full
├── file1
├── file2
└── file3
实际上,这个文件夹是数千个子文件夹。我只需要保留./gallery/{number}/full/*
(即full
文件夹以及gallery
内每个编号目录中的所有文件),其他所有内容都不再需要,需要删除。
是否可以构建一个单行来处理这个问题?我已经尝试过find / maxdepth / prune无法找到满足我需求的arragement。
(更新:澄清一下,所有文件夹都包含文件 - none都是空的)
答案 0 :(得分:2)
使用PaddyD答案,您可以先清除不需要的目录,然后将其删除:
float
答案 1 :(得分:2)
这可以通过bash extglobs轻松完成,它允许匹配与模式不匹配的所有文件:
shopt -s extglob
rm -ri ./gallery/*/!(full)
答案 2 :(得分:0)
怎么样:
find . -type d -empty -delete