Como posso compactar vários pares de arquivos em arquivos separados por nome?

2

Tenho algumas dezenas de conjuntos de pastas do projeto Audacity e arquivos de projeto .aup cujos nomes são muito próximos, ou seja, 10-13-14-data e 10-13-14.aup. Eu gostaria de compactar todos esses arquivos automaticamente através da linha de comando para zips individuais (nomeados por exemplo 10.13.14.zip), em vez de percorrer todo o conjunto e compactar cada um deles (o que deveria ter sido feito inicialmente). / p>

Estou fazendo isso porque gostaria de aprender mais sobre como usar o CLI e espero continuar aprendendo com o AskUbuntu. Eu poderia simplesmente passar pelo número de arquivos / pastas que tenho que juntar, mas estou aproveitando a oportunidade para ser paciente e aprender algo novo. Obrigado!

    
por Noah Bertilson 13.10.2014 / 22:21

2 respostas

2

Você pode usar um loop for no diretório pai dos diretórios que contêm os arquivos, por exemplo

for f in */*; do 
    zip "${f%.*}".zip "${f%.*}.data" "${f%.*}.aup"
    echo mv -v -- "${f%.*}".zip /media/user/folder/$(basename "${f/.*/.zip}")      
done

remova echo depois de testar e execute novamente para realmente mover os arquivos (você precisaria substituí-lo por sudo neste caso).

    
por Zanna 29.01.2017 / 21:56
0

Eu consegui (com muita ajuda do meu pai) para fazer isso.

dates='ls *.aup | sed 's/\(.*\).aup//''
for i in $dates; do zip -r $i $i*
mv $i /media/user/folder
done

Eu não entendo completamente isso, mas atualmente está funcionando; se alguém quiser explicar como resolvi meu próprio problema, agradeceria em nome daqueles que encontrarem essa pergunta / resposta no futuro; obrigado por tentar ajudar, aqueles que fizeram!

    
por Noah Bertilson 14.10.2014 / 05:45