Come estrarre rapidamente tutti i tipi di file archiviati dalla riga di comando?


11

Molte volte ho bisogno di estrarre diversi tipi di file archiviati usando la riga di comando. Ma non sempre ricordo il comando esatto per qualsiasi tipo di archivio di file. Quindi, devo perdere tempo e cercare di nuovo. Come posso evitarlo?


1
Vedi anche atool, con il quale puoi estrarre / impacchettare più formati: vedi la risposta che ho dato per questa domanda: riga di comando-archivio-gestore-estrattore . Questa domanda è anche una copia di quella, quindi probabilmente dovrebbero essere unite.

Risposte:


15

Il dtrxcomando è tuo amico in merito.

Decomprime qualsiasi file di archivio indovinandone il tipo. Si assicurerà inoltre che i file decompressi vengano inseriti in una nuova directory; evitando di rovinare l'attuale directory di lavoro con tonnellate di file.

Installare

sudo aptitude install dtrx

uso

dtrx stuff.zip

11

È possibile utilizzare il seguente script di shell (l'ho chiamato extracte l'ho inserito ~/bin):

#! / Bin / bash

if [$ # -lt 1]; allora
  echo "Utilizzo:` basename $ 0` FILES "
  uscita 1
fi

# Ho trovato la seguente funzione su https://unix.stackexchange.com/a/168/37944 
# che l'ho migliorata un po '. Mille grazie a Sydo per questa idea.
estratto () {
    per arg in $ @; fare
        if [-f $ arg]; poi
            caso $ arg in
                * .tar.bz2) tar xjf $ arg ;;
                * .tar.gz) tar xzf $ arg ;;
                * .bz2) bunzip2 $ arg ;;
                * .gz) gunzip $ arg ;;
                * .tar) tar xf $ arg ;;
                * .tbz2) tar xjf $ arg ;;
                * .tgz) tar xzf $ arg ;;
                * .zip) decomprimere $ arg ;;
                * .Z) decomprimere $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' deve essere installato
                * .jar) jar -xvf $ arg ;; # 'jdk' deve essere installato
                *) echo "'$ arg' non può essere estratto tramite extract ()" ;;
            esac
        altro
            echo "'$ arg' non è un file valido"
        fi
    fatto
}

estrae $ @

Non dimenticare di rendere eseguibile lo script:

chmod +x ~/bin/extract

Uso:

estrarre file_1 file_2 ... file_n 

Ben fatto. Trovo che zip a volte si estrae nella directory corrente, quando lo voglio nella sua sottodirectory. L'uso di unzip -d basename $argpotrebbe essere d'aiuto.
Crafter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.