원본 입력:

원본 입력:

원본 입력:

➜  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삽입 여부를 테스트합니다.

관련 정보