这就是我想要实现的目标:我有一些目录以及其中的子目录(可能有子子目录)。在每个子目录中,我想要一个包含该特定目录内容的 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
使用时是相对的。