基于 find、-exec 的 Zip 子目录

基于 find、-exec 的 Zip 子目录

这就是我想要实现的目标:我有一些目录以及其中的子目录(可能有子子目录)。在每个子目录中,我想要一个包含该特定目录内容的 zip 文件。

find 很好地找到了我的子目录:

find . -mindepth 2 -maxdepth 2 -type d

但我很难完成

-exec zip ... \;

你能帮我吗?我尝试了很多组合,无法弄清楚。 :(

为了澄清起见,这里有一棵树。

├── DIR1
│   ├── FILE1
|   ├── FILE2
│   └── FILE3
├── FILE4
├── DIR2
│   ├── DIR3
│   │   ├── SUBDIR1
│   │   │   ├── SUBFILE1
│   │   │   ├── SUBSUBDIR1
│   │   │   │   ├── SUBSUBFILE1
│   │   │   │   └── SUBSUBFILE2
│   │   │   └── SUBSUBDIR1
│   │   │       ├── SUBSUBFILE3
│   │   │       └── SUBSUBFILE4
│   │   ├── FILE4
│   │   ├── FILE5
│   │   ├── FILE6
│   │   └── Zip file named DIR3.zip with FILE4, FILE5, FILE6

答案1

使用-execdir而不是-exec从当前正在遍历的目录运行命令find,这使得这个问题变得更容易一些:

find . -mindepth 2 -maxdepth 2 -type d -execdir zip -r {}.zip {} ';'

请注意,该字符串{}被解释为find当前文件名,并且在-execdir使用时是相对的。

相关内容