반응형
폴더 내에 모든 압축파일 해제하기, 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은 각각의 압축파일을 해제하게 된다.
반응형
'각종 Tips > Ubuntu' 카테고리의 다른 글
[Ubuntu / 우분투] 리눅스 파일 split으로 쪼개기 (0) | 2021.08.03 |
---|---|
[Ubuntu / 우분투] Linux에서 buffer/cache 비우기 (0) | 2021.07.30 |
[Docker / Linux] 도커 볼륨에서 실수로 파일을 삭제했을 때 (0) | 2021.07.03 |
[Docker / Linux] 도커 볼륨의 용량이 너무 클 때 해결법 (0) | 2021.07.03 |
[Ubuntu / 우분투] 쉘 스크립트 숫자연산하기 (0) | 2021.06.28 |