목표는 많은 zip 파일의 압축을 풀고 결과 파일의 이름을 원래 아카이브 이름으로 바꾸는 것입니다.
많은 zip 파일이 포함된 폴더의 경우 대부분 이름이 이라는 파일이 포함되어 있지만 bla.txt
물론 몇 가지 예외도 있습니다. 우리 모두 알고 있듯이 모든 파일에는 txt 파일인 파일이 있습니다.
./zips/
a.zip - contains bla.txt
b.zip - contains bla.txt
c.zip - contains somethingelse.txt
d.zip - contains bla.txt
... - ...
출력은
./zips/
a.txt
b.txt
c.txt
d.txt
...
모든 것을 추출하고 수많은 폴더를 남겨둔 최고의 최신 사진:
for z in *.zip; do unzip $z -d $(echo 'dir_'$z); done
어쩌면 좋아
for z in *.zip; do unzip $z; mv 'content_name.txt' $z; done
그런데 콘텐츠 이름은 어떻게 얻나요?
답변1
이 -d
아이디어를 계속 사용하여 추출된 파일의 이름을 원하는 "zip 이름 빼기 zip + txt"로 바꿀 수 있습니다.
mkdir tmp
for f in *.zip; do unzip "$f" -d tmp && mv tmp/* "${f%.zip}.txt"; done
rmdir tmp
또는 unzip의 출력을 적절한 이름의 파일로 파이프할 수 있습니다.
for f in *.zip; do unzip -p "$f" > "${f%.zip}.txt"; done
답변2
이 명령 에는 아카이브에 실제 아카이브 이름을 표시하는 unzip
자체 옵션이 있으며 이 옵션은 그대로 사용됩니다 . 따라서 임시 디렉터리를 만들지 않고 간단히 다음을 수행할 수 있으며 현재 디렉터리에서 수행됩니다.unzip -Z1 zipfile.zip
zipinfo's
-1
zipinfo -1 zipfile.zip
mv
for z in *.zip; do
unzip "$z";
mv "$(unzip -Z1 $z)" "${z%%.*}.txt";
done