2010-06-01 17 views
23

Vorrei decomprimere un archivio ad es. "tar123.tar.gz" alla directory/myunzip/tar123/"usando un comando shelluntar nomefile.tr.gz nella directory "nome file"

tar -xf tar123.tar.gz decomprimerà i file ma nella stessa directory in cui sto lavorando.

Se il nome del file sarebbe "tar233.tar.gz" voglio che venga decompresso in /myunzip/tar233.tar.gz "così la directory di destinazione sarebbe basata sul nome del file.

Qualcuno sa se il comando tar può farlo?

risposta

30

Con Bash e GNU tar:

file=tar123.tar.gz 
dir=/myunzip/${file%.tar.gz} 
mkdir -p $dir 
tar -C $dir -xzf $file 
+0

il problema qui è che io non so che cosa il nome del file sarà. Sarà un file con versione così oggi potrebbe essere 1.tar.gz ma domani potrebbe essere 2.tar.gz. C'è un modo per dire semplicemente "file = quale-mai-in/home/utente"? – Jorre

+0

Dovrai saperlo in qualche modo. Se ordinano, puoi usare qualcosa come 'file = $ (ls -1 $ modello | coda -1)'. –

4

È possibile modificare la directory prima dell'estrazione con il flag -C, ma la directory deve esistere già. (Se si crea directory specifiche di file, vi raccomando vivamente contro chiamandoli foo.tar.gz -.. L'estensione implica che si tratta di un file di archivio, ma in realtà è una directory che piombo volontà di confusione)

2

Prova

file=tar123.tar.gz 
dir=/myunzip/$(basename $file .tar.gz) # matter of taste and custom here 
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; } 
mkdir "$dir" && (gzip -d "$file | (cd "$dir" && tar xf -)) 

Se si utilizza GNU tar, è anche possibile fornire un'opzione -C "$dir" che causerà la modifica della directory prima dell'estrazione. Ma il codice sopra dovrebbe funzionare anche con un catrame dell'età del bronzo.

Disclaimer: nessuno dei codici sopra è stato testato.

23
tar -xzvf filename.tar.gz -C destination_directory 
+1

Ho solo bisogno della parte '-C', grazie! – juanmirocks

Problemi correlati