셸 스크립트는 .zip 없이 동일한 이름을 가진 대상의 폴더에 파일을 추출하고 zip이 아닌 각 파일도 동일한 위치로 이동합니다.

셸 스크립트는 .zip 없이 동일한 이름을 가진 대상의 폴더에 파일을 추출하고 zip이 아닌 각 파일도 동일한 위치로 이동합니다.

스크립팅을 연습해야 합니다. 지금까지 .zip 및 플랫 파일을 소스 위치에 넣을 때 작동하는 다음 스크립트가 있습니다. 두 개 이상의 파일을 넣으면 올바르게 실행되지 않으며 더 효율적인 방법으로 도움을 줄 수 있는 사람이 있는지 알고 싶습니다. 스크립트가 소스 폴더에서 .zip 파일을 검색하고 .zip을 뺀 동일한 이름의 폴더에 압축을 푼 다음 새 폴더를 다른 플랫 파일 또는 .zip이 아닌 파일과 결합해야 함을 명확히 해야 합니다. 폴더 대상 위치로 함께 이동합니다. 소스를 별도의 위치에 복사하고 원본 .zip 파일을 삭제하세요.

#! /bin/bash

cd "/path/to/source/Location"
for file in $(ls *.zip); do unzip $file -d $(echo $file | cut -d . -f 1); done
mv $(echo $file | cut -d . -f 1) /Destination/for/Unzip
rm *.zip
mv LOCK* /Destination/For/Flat/Files

답변1

셸 구성을 사용하여 확장을 제거하고 아카이브를 대상으로 직접 추출하여 forglobbing을 직접 사용할 수 있습니다 ..zip

#!/bin/bash

cd "/path/to/source/location"
for file in *.zip; do
  unzip "${file}" -d "/destination/for/unzip/${file%%.zip}" && rm "${file}"
done
mv LOCK* /destination/for/flat/files

또한 아카이브가 성공적으로 추출된 후에만 아카이브가 삭제되도록 보장합니다.

관련 정보