Descompactar vários arquivos específicos de um diretório usando o terminal?

0

Eu recentemente instalei o Linux Mint 17 no meu laptop. Eu tinha o Windows 7 antes e fiz backup de todos os meus dados em um disco rígido externo. O Windows 7 utiliza todos os seus dados de backup em uma tonelada de pastas .zip. Aqui está o meu problema: eu só quero extrair as pastas que contêm minha música, que estão no caminho C:\...\Username\Music... . Então eu tentei encontrar uma maneira de usar o descompactar os arquivos do meu disco rígido externo e em meu diretório de música na minha pasta pessoal usando o terminal. Eu ainda estou aprendendo a usar o terminal, mas é isso que eu encontrei:

for file in *.zip; do unzip -c "$file" -d "/~/Music" | grep "\Username\Music"; done

Isso me dá a saída:

caution:  not extracting; -d ignored

Quando eu removo o -d , ele funciona, (bem, parece funcionar: ele funcionou por um tempo), mas eu recebo uma saída estranha no final e então:

62;9;c62;9;c62;9;c62;9;c

Eu procurei pela música que estava supostamente descompactada, mas não consegui encontrá-la. Alguém pode me dizer se e como posso realizar meu objetivo? Gostaria de descompactar apenas meus arquivos de música do meu disco rígido externo para minha pasta de músicas.

    
por Gilles 27.12.2014 / 03:07

1 resposta

2

O -c flag de descompactar significa extrair arquivos para stdout / screen , portanto nenhum arquivo é realmente gravado em disco e, portanto, a opção -d não tem sentido - também pode explicar os caracteres estranhos você está vendo no terminal. Talvez você esteja pensando no modificador -C ( correspondência insensível a maiúsculas e minúsculas )?

Em vez de usar grep , provavelmente o que você deseja é fornecer uma lista opcional de membros do archive a serem processados após o zipfile: também é provável que você use o estilo Unix / path separators , mesmo se a origem do zipfile for um sistema Windows.

Finalmente, "/ ~ / Music" provavelmente será interpretado como um caminho absoluto literal; você provavelmente precisará de ~/Music/ ou "$HOME/Music/" - o último formulário sendo mais facilmente modificado para segmentar diretórios com espaços neles, por exemplo "$HOME/My Music/"

unzip -C "$file" '*/Username/Music/*' -d "$HOME/Music/"

No entanto, isso provavelmente resultará em uma estrutura de pastas como ~/Music/Username/Music/somefile , que pode não ser o que você pretende. AFAIK unzip não tem a mesma flexibilidade para remover os principais componentes de diretório que algumas implementações de tar fazem, no entanto, você pode querer olhar para o modificador -j .

    
por 27.12.2014 / 04:09