원본 입력:
➜ 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
, 그러면 불편합니다./data
tree
zip -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
주어진 명령을 실행 합니다. 이렇게 하면 포함 파일이 생성됩니다(아카이브 파일 이름에 경로가 추가되지 않음).zip
data
data/Archive.zip
data
이는 다음과 유사합니다.이전 질문에 대한 내 답변, data/Archive.zip
삽입 여부를 테스트합니다.