web-dev-qa-db-fra.com

Extrayez et supprimez tous les fichiers .gz d'un répertoire - Linux

J'ai un répertoire. Il a environ 500K fichiers .gz. 

Comment puis-je extraire tous les fichiers .gz de ce répertoire et supprimer les fichiers .gz?

73
user2247643

Cela devrait le faire:

gunzip *.gz
148
Adrian Dunn

Il y a évidemment plus d'une façon de le faire.

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '{}' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

Je suis sûr qu'il y a aussi d'autres moyens, mais c'est probablement le plus simple.

Et pour le supprimer, il suffit de faire un rm -rf *.gz dans le répertoire applicable

17
techedemic

@techedemic est correct mais il manque '.' mentionner le répertoire en cours, et cette commande permet de parcourir tous les sous-répertoires.

find . -name '*.gz' -exec gunzip '{}' \;
17
elhaj

Si vous voulez extraire un seul fichier, utilisez:

gunzip file.gz

Il va extraire le fichier et supprimer le fichier .gz.

3
Neelam

Extrayez tous les fichiers gz du répertoire courant et de ses sous-répertoires:

 find . -name "*.gz" | xargs gunzip 
2
Jokerius
for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done
1
Steven Penny

Essayer:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

Alors essaye:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

Cela va décompresser tous les fichiers .tar.gz du répertoire actuel, puis supprimer tous les fichiers .tar.gz. Si vous voulez une explication, le "|" prend la sortie standard de la commande précédente et l’utilise comme stdin de la commande suivante. Utilisez "man command " sans les guillemets pour comprendre le rôle de ces commandes et arguments. Ou, vous pouvez rechercher en ligne.

0
user2921779