여러 파일이 포함된 폴더가 있습니다.
폴더
- 아티팩트1.app
- 아티팩트2.ext2
- 아티팩트3.ext3
- ...
cd
내 목표는 폴더 dir을 포함하지 않고 해당 폴더 외부의 파일을 명령을 사용하지 않고 압축하는 것입니다 .
zip -r ./folder/artifact.zip ./folder/artifact1.app
이 명령에는 최종 zip의 폴더 디렉터리가 포함되어 있습니다. 어떤 팁이 있나요?
관련 질문:폴더 자체를 포함하지 않고 폴더 내용 압축
답변1
디렉터리를 지정하지 않고 모든 파일을 해당 이름으로 저장하려는 경우 이 옵션을 folder
사용할 수 있습니다 .-j
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
또는
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
folder/subdir/foo
하위 디렉터리에 파일이 있으면 아카이브 에 디렉터리 구성 요소가 없습니다 foo
.
그러나 디렉토리를 변경하는 것이 더 쉬울 수도 있습니다. 위의 중괄호 방법과 거의 동일한 양의 입력이 필요합니다. 이렇게 하면 하위 디렉터리에 파일을 포함하면 해당 파일은 변경한 디렉터리에 대한 상대 경로를 갖게 됩니다. 예를 folder/subdir/foo
들어 subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
대화형 사용의 경우 명령을 실행할 때 쉘이 다른 디렉토리에 있다는 것을 인식하지 못하기 때문에 이 방법으로 쉘 완성이 손실됩니다 zip
. 이 문제를 해결하려면 cd
명령을 별도로 실행하십시오. 이전 디렉토리로 쉽게 돌아가려면 pushd
및 를 사용할 수 있습니다 popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
zip 파일에 저장된 경로를 완전히 제어하려면 심볼릭 링크 포리스트를 생성하면 됩니다. 별도로 명시하지 않는 한 zip
심볼릭 링크는 저장되지 않습니다.