반응형


 

폴더 내에 모든 압축파일 해제하기, unzip * 안되는 이유

 

우리는 기본적으로 모든 파일을 옮기거나 복사할 때는 아래와 같이 * 을 주로 사용한다.

하지만, unzip에서는 이러한 명령어를 지원하지 않는다.

 

cp *.zip ../
# 모든 압축 파일을 상위 디렉토리로 복사한다.
mv *.zip ../
# 모든 압축 파일을 상위 디렉토리로 이동한다.
unzip *.zip 
# 동작하지 않는다.

 

이는 bash쉘 자체가 Wildcard Characters(*, ?, [])등을 인식하여 자동으로 변환한 파라미터를 전달하기 때문이다.

즉 실제 unzip은 아래와 같이 작동하게 된다.

 

# 입력한 명령어 
unzip *.zip

# 실제 처리되는 명령어
unzip a.zip b.zip c.zip d.zip

# a.zip 안에 있는 b.zip 안에 있는 c.zip 안에 있는 d.zip을 압축해제하라.

 

위와 같은 이유로 not matched와 같은 에러 메시지가 발생하게 되는 것이다.

하지만, unzip 내부에서도 이런 Wildcard Expression을 지원하기 때문에, unzip의 파라미터로 직접 *.zip을 전달하면 원하는 결과를 얻어낼 수 있다.

 

 

unzip \*.zip

 

탈출문자를 활용하여 위와 같이 명령어를 입력할 경우, Wildcard Expression이 unzip에 직접 전달되고, 사용자가 의도한대로 unzip은 각각의 압축파일을 해제하게 된다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,