2011-03-03 5 views
12

J'ai environ 200 000 pouces dans un dossier qui sont tous gzipped se terminant par .tar.gz Ce que je cherche à faire est d'extraire tous les fichiers dans ce dossier, mais à un dossier différent. Est-ce que quelqu'un connaît une commande pour le faire? J'ai trouvé ceci en ligne mais je ne saurais pas comment l'utiliser pour extraire dans un dossier différent.ubuntu extraire plusieurs fichiers .tar.gz dans le nouveau répertoire

for i in *.tar.gz; do tar -xvzf $i; done 
+0

Comment cela est-il lié à la programmation? –

+0

aucune idée mais j'ai trouvé des questions similaires sur ici, donc j'ai pensé que je demanderais parce qu'il y a beaucoup de connaissances ici. – chris

+0

Toute question similaire à votre aurait été supprimée ou fermée/migrée. –

Répondre

27

Ajouter l'option -C pour sélectionner le répertoire cible:

for i in *.tar.gz; do tar xvzf $i -C path/to/output/directory; done 
+0

semble fonctionner, merci. – chris

2
actdir=`pwd` 
for files in *tar.gz ; do 
    filedir=`basename $files .tar.gz` 
    mkdir $filedir 
    cd $filedir 
    tar -xzf ../$files 
    cd $actdir 
done 

HTH

+0

Je suis impressionné par le fait que tar n'a pas la possibilité de créer le dossier automatiquement. Merci pour votre script, très utile. –

4

En ce moment, vous utilisez

tar 

pour extraire tous les fichiers. Je crois que vous pouvez définir quel répertoire à la sortie.

Ce serait quelque chose comme ceci:

for i in *.tar.gz; do tar -xvzf $i -C directory; done 

où répertoire est le chemin du dossier que vous souhaitez extraire les fichiers. Voir http://www.computerhope.com/unix/utar.htm (documentation sur tar).

2

L'option -C est probablement meilleure. Vous pouvez également faire:

mkdir $/path/to/newfolder
$ for i in * .tar.gz; do files = "$ fichiers $ (readlink -f $ i)"; done # construit la liste absolue des noms de fichiers
$ cd/chemin/vers/nouveau dossier
$ pour i dans $ files; fais tar -zxvf $ i; terminé

Questions connexes