Наступний підхід працює для цього типу дерева каталогів:
$ tree .
.
├── adir1
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── adir2
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── adir3
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── afile1
├── afile2
├── afile3
├── foo.test
Це було рішення, яке працювало для цього сценарію (я вважаю, що це більш загальний випадок).
$ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +
Приклад
$ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +
updating: adir1/afile1 (stored 0%)
updating: adir1/afile1.zip (stored 0%)
updating: adir1/afile2 (stored 0%)
updating: adir1/afile3 (stored 0%)
updating: adir1/afile4.txt (stored 0%)
updating: adir2/afile1 (stored 0%)
updating: adir2/afile2 (stored 0%)
updating: adir2/afile3 (stored 0%)
updating: adir2/afile4.txt (stored 0%)
updating: adir3/afile1 (stored 0%)
updating: adir3/afile2 (stored 0%)
updating: adir3/afile3 (stored 0%)
updating: adir3/afile4.txt (stored 0%)
updating: afile1 (stored 0%)
updating: afile2 (stored 0%)
updating: afile3 (stored 0%)
updating: foo.test (deflated 87%)