디렉토리의 모든 폴더를 압축하는 명령은 무엇입니까

디렉토리의 모든 폴더를 압축하는 명령은 무엇입니까

내 디렉토리에 여러 개의 폴더가 있는데 개별적으로 압축하고 싶습니다.

Root
    -folder1
    -folder2

입력하다:

Root
    -folder1.zip
    -folder2.zip
    -folder1
    -folder2

이것을 이루기 위한 명령은 무엇입니까?

답변1

dir_name=$(find /root/* -maxdepth 0 -type d)
for i in $dir_name; do zip -r $i $i; done

답변2

이 작업을 수행하기 위해 bash를 사용하고 있습니까? 이렇게 하면 다음을 사용할 수 있습니다 zip -r /root/folder1.zip /root/folder1/; zip -r /root/folder2.zip /root/folder2/.

답변3

모든 폴더를 찾으려면 정확한 명령으로 시작하십시오. 원하지 않는 디렉터리를 필터링하도록 with 문을 수정합니다(예 __pycache__: ).


ROOT_DIR="./Root"
(olddir=$PWD; cd "$ROOT_DIR"; for foldername in $(ls -1); do [ -d "$foldername" ] && echo "$foldername"; done; cd $olddir)

그런 다음 "echo" 문을 자주 사용하는 보관 명령(zip, tar 등)으로 바꾸세요. 디렉터리 이름에 공백을 지원하려면 변수에 큰따옴표를 사용해야 합니다.

위 방법의 장점은 ./접두사가 포함된 "깨끗한" 폴더 이름을 얻을 수 있으므로 이를 아카이브 이름으로 사용할 수 있다는 것입니다.

관련 정보