Parece que o zip quer o arquivo zip primeiro:
for i in */; do zip "${i%/}.zip" -r "$i" ; done
Eu sou novo em usar o terminal e encontrei um post aqui com o seguinte código que me permitiria zipar vários diretórios em arquivos zip individuais, mas eu só consegui que funcionasse uma vez. O código é este:
for i in */; do zip ‐r "${i%/}.zip" "$i"; done
mas agora, quando eu uso, recebo o seguinte erro:
zip warning: name not matched:
e quando eu verificar a pasta, ele cria um arquivo -r.zip
.
Parece que o zip quer o arquivo zip primeiro:
for i in */; do zip "${i%/}.zip" -r "$i" ; done
Se você é novo no terminal, é provável que você não tenha aprendido o assustador mas útil mundo das man pages: D
Se você usar man zip
na linha de comando, o uso pretendido do zip será o seguinte:
"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."
Eu começaria substituindo seu comando zip por um echo "$ {i% /}" e veria qual é a sua saída. Em algum lugar, uma pasta está causando um problema, ou você não consegue acessá-la ou seu nome está incorreto. Como você está apenas olhando para pastas em um diretório, pode usar find . -type d -readable
para comparar com os diretórios que deseja acessar para ver se há uma pasta que você não tem acesso para ler.
relacionadas ao Unix Stack Exchange Answers:
"aviso de zip: nome não correspondido" compactando um diretório
Tags zip