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
.