Como compactar vários diretórios em arquivos zip individuais [duplicados]

1

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 .

    
por Paul Wong 20.02.2016 / 05:53

2 respostas

2

Parece que o zip quer o arquivo zip primeiro:

for i in */; do zip "${i%/}.zip" -r "$i" ; done
    
por 20.02.2016 / 06:25
0

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:

link

"aviso de zip: nome não correspondido" compactando um diretório

    
por 20.02.2016 / 09:27

Tags