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?
Cela devrait le faire:
gunzip *.gz
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
@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 '{}' \;
Si vous voulez extraire un seul fichier, utilisez:
gunzip file.gz
Il va extraire le fichier et supprimer le fichier .gz.
Extrayez tous les fichiers gz du répertoire courant et de ses sous-répertoires:
find . -name "*.gz" | xargs gunzip
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
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.