저는 터미널을 처음 사용하는데 여기에서 여러 디렉터리를 별도의 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