オリジナル入力:

オリジナル入力:

オリジナル入力:

➜  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 ';'はすべてフィルタリングされます。dataArchive.zip

この行はで置き換えることができます\! -execdir test -f data/Archive.zip ';'

最後に、ディレクトリの親ディレクトリから指定され-execdirたコマンドを実行します。これにより、インクルードファイルが作成されます(アーカイブファイル名にパスは追加されません)。zipdatadata/Archive.zipdata

これは次のようになります。前の質問に対する私の答えdata/Archive.zip挿入するかどうかをテストします。

おすすめ記事