특정 폴더의 모든 파일을 압축하고 싶지만 디렉터리는 압축하지 않으려고 합니다. 이를 수행하는 방법을 아시나요?
예를 들어 디렉토리엑스파일 포함F1그리고F2및 디렉토리D1그리고D2.
디렉토리를 압축하는 방법엑스유일한 소유F1그리고F2설마D1그리고D2.
답변1
이 문제를 해결하는 한 가지 방법은 zip
제외 옵션을 사용하는 것입니다.
zip /path/to/zip/file.zip /path/to/given/folder/* -x /path/to/given/folder/*/
이는 zip
/path/to/given/folder에 있는 모든 항목을 아카이브하도록 지시하지만 해당 폴더(디렉토리)에 있는 모든 항목도 제외합니다. 다음은 와일드카드로 작업을 수행하는 쉘입니다. 슬래시로 끝나는 와일드카드를 해당 폴더의 디렉토리 목록으로 확장합니다. 해당 디렉터리에 도트 파일이 있는 경우 해당 파일을 개별적으로 확장해야 하며 "도트 디렉터리"도 제외해야 합니다.
답변2
GNU find
또는 호환 버전의 경우 개행 문자가 포함된 파일 이름이 없다고 가정합니다.
find X -maxdepth 1 -type f | zip -nw -@ X.zip
이 -@
옵션은 표준 입력에서 한 줄에 하나씩 파일 목록을 가져옵니다. -nw
(또는 ) , 또는 문자가 포함된 파일 이름과 관련된 문제를 방지하려면 --no-wild
에 대한 와일드카드 확장을 끄십시오 .zip
*
?
[
답변3
그리고 zsh
,
zip -nw X.zip X X/*(ND.)
일반 파일 X
(.
글로벌 예선그 안에 포함된 숨겨진 콘텐츠( )를 D
어휘순으로 압축된 아카이브에 넣습니다.X.zip
.
어느 것을 선택하는 것 보다정기적인^/
파일만, 모든 유형의 파일을 선택하는 데 사용할 수 있습니다.와는 별개로심볼릭 링크, fifo, 장치, 소켓을 포함한 디렉터리. 그러나 그 중에서 zip 형식(Unix 형식과는 다름)은 심볼릭 링크와 fifo(명명된 파이프)만 저장할 수 있으며 다음을 --symlinks
사용 --fifo
하여 일반, 심볼릭 링크 및 명명된 ipes 만 선택할 zip
수도 있습니다 ..,@,p
p
zip --symlinks --fifo -nw X.zip X/*(ND.,@,p)
답변4
압축할 때 특정 하위 폴더를 이스케이프하려면 *
백슬래시( \
)를 사용하여 이스케이프해야 셸이 이를 (파일 목록으로 확장하는 대신) 리터럴 문자로 처리할 수 있습니다. 다음은 다음과 같습니다.
zip /path/to/zip/file.zip /path/to/given/folder/* -x /path/to/given/folder/subfolder/\*
도움이 되었기를 바랍니다!