여러 디렉토리를 별도의 zip 파일로 압축하는 방법

여러 디렉토리를 별도의 zip 파일로 압축하는 방법

저는 터미널을 처음 사용하는데 여기에서 여러 디렉터리를 별도의 zip 파일로 압축할 수 있는 다음 코드가 포함된 기사를 찾았지만 한 번만 작동하게 했습니다. 코드는 다음과 같습니다.

for i in */; do zip ‐r "${i%/}.zip" "$i"; done

하지만 이제 사용하면 다음과 같은 오류가 발생합니다.

zip warning: name not matched:

폴더를 확인하면 -r.zip 파일이 생성됩니다.

답변1

zip에는 먼저 zip 파일이 필요한 것 같습니다.

for i in */; do zip "${i%/}.zip" -r "$i" ; done

답변2

터미널을 처음 사용하신다면, 아마도 매뉴얼 페이지의 힘들지만 유용한 세계에 대해 배우지 않으셨을 것입니다. :D

man zip명령줄에서 이 작업을 수행하는 경우 예상되는 zip 사용법은 다음과 같습니다.

"Normally when an input pattern
              does not match a file the "name not matched" warning  is  issued
"

If zip is not able to read a file, it issues a warning  but  continues.
       See  the -MM option below for more on how zip handles patterns that are
       not matched and files that  are  not  readable.   If  some  files  were
       skipped, a warning is issued at the end of the zip operation noting how
       many files were read and how many skipped."

먼저 zip 명령을 echo "${i%/}" 로 바꾸고 출력이 무엇인지 확인합니다. 특정 폴더가 문제를 일으키고 있어 해당 폴더에 액세스할 수 없거나 이름이 잘못되었습니다. 한 디렉터리의 폴더만 보기 때문에 이를 사용하여 find . -type d -readable액세스하려는 디렉터리와 실제로 읽을 권한이 없는 폴더가 있는지 확인할 수 있습니다.

관련 Unix Stack Exchange 답변:

https://stackoverflow.com/questions/20529851/zip-command-not-working

디렉터리를 압축할 때 "zip 경고: 이름 불일치" 발생

관련 정보