내 디렉토리에 여러 개의 폴더가 있는데 개별적으로 압축하고 싶습니다.
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 등)으로 바꾸세요. 디렉터리 이름에 공백을 지원하려면 변수에 큰따옴표를 사용해야 합니다.
위 방법의 장점은 ./
접두사가 포함된 "깨끗한" 폴더 이름을 얻을 수 있으므로 이를 아카이브 이름으로 사용할 수 있다는 것입니다.