Talvez este seja o auge dos problemas do primeiro mundo, mas depois de anos de angústia, só preciso expor isso.
Digamos que você baixou funtool.zip
em sua ~/Downloads
pasta. Você tem duas opções, cada uma com dois resultados possíveis, dependendo se o arquivo tem uma pasta raiz adequada.
unzip funtool
. Possíveis resultados:
~/Downloads/funtool/(files)
-- Bom~/Downloads/(lots of files)
-- AUG! Baixar pasta cheia de lixo
unzip funtool -d funtool
. Possíveis resultados:
~/Downloads/funtool/funtool/(files)
-- Pastas duplas. Chato!~/Downloads/funtool/(files)
-- Bom
Já vi alguns descompactadores de GUI com inteligência integrada para isso, mas sou um cara da CLI. Minha solução é verificar se há uma pasta raiz unzip -t funtool
e agir de acordo. Mas depois de anos, eu tive.
Existe um script ou algo que faça isso automaticamente, mesmo para rar
arquivos, e possivelmente 7z
? Pelo menos essa é uma coisa que tar
parece dar certo todas as vezes, talvez por causa de boas convenções.
Como um frontend CLI para vários formatos de arquivo, há
unp
, descompacte (quase) tudo com um comando .E afirma ter estas opções:
E parece que está próximo do comportamento que você está procurando.
No entanto, o
-U
modo ainda sobrecarrega um único arquivo se for um ZIP com um único arquivo que não esteja relacionado de forma alguma ao nome do próprio arquivo zip.7z
pode fazer isso, pelo menos se o diretório raiz no arquivo (se houver) corresponder ao nome do diretório para o qual você está extraindo:Se
funtool.zip
o conteúdo de estiver todo dentro de umfuntool
diretório no arquivo,7z
não duplicará o diretório abaixofuntool
, fornecendo o resultado que você procura.Existe a ferramenta de linha de comando dtrx , que é capaz de extrair qualquer tipo de arquivo compactado. Por padrão, tudo será gravado em um diretório dedicado com o nome do arquivo.
Simplesmente corra
Se você tiver uma distribuição baseada em Debian, poderá encontrá-la no repositório APT.