原始输入:

原始输入:

原始输入:

➜  datatest tree
.
├── a
│   ├── README.md
│   ├── code
│   └── data
│       └── apple.csv
├── archive.sh
├── f
│   ├── README.md
│   ├── code
│   └── data
│       ├── Archive.zip
│       ├── a.csv
│       ├── b.xlsx
│       └── c.xlsx
└── toolbox
    └── tool.py

7 directories, 9 files

输出:

➜  datatest tree
.
├── a
│   ├── README.md
│   ├── code
│   └── data
│       ├── Archive.zip
│       └── apple.csv
├── archive.sh
├── f
│   ├── README.md
│   ├── code
│   └── data
│       ├── Archive.zip
│       ├── a.csv
│       ├── b.xlsx
│       └── c.xlsx
└── toolbox
    └── tool.py

7 directories, 10 files

在每个 /data 子文件夹中,文件应被压缩到Archive.zip除非它已经存在Archive.zip(如f文件夹)。

试:

我必须使用命令行检查是否有Archive.zip任何子文件夹中没有,然后,这很不方便。/datatreezip -r Archive.zip ./*

希望:

如何使用一次命令或编写脚本来实现此目的?我使用的是 OSX(10.12.6)。

答案1

也许是这样的?

find . -type d -name data \
    \! -exec test -f {}/Archive.zip ';' \
    -execdir zip -rj data/Archive.zip data ';'

这将找到每个data目录(第一行)。

\! -exec test -f {}/Archive.zip ';'过滤掉任何data不包含任何名为 的文件的目录Archive.zip

该行可以替换为\! -execdir test -f data/Archive.zip ';'.

最后一个将从目录的父目录中-execdir执行给定的命令。这将创建包含文件(没有附加到存档文件名的路径)。zipdatadata/Archive.zipdata

这类似于我对你上一个问题的回答,但要测试data/Archive.zip插入的存在性。

相关内容