Trouvez toutes les zips et décompressez-les - Unix
J'ai essayé pendant un certain temps et je crois que je suis assez proche de cela, mais je suis assez nouveau à Unix ont donc été de trouver cela difficile.
J'ai un dossier contenant de nombreux dossiers, dont certains ont des fichiers zip dans, certains qui n'en ont pas. Je suis en train de décompresser tous les fichiers zip dans tous les sous répertoires en place.
Par exemple, j'ai:
files/A/something.java
files/B/somezipfile.zip
files/C/someotherfile.zip
files/D/AnotherZipFile.zip
Je tiens à les décompresser (en supposant que le zip contient juste .fichiers java), pour avoir un résultat comme:
files/A/something.java
files/B/javafile.java
files/C/someotherfilefromzip.java
files/D/Anotherfile.java
Je n'ai pas l'esprit si les fichiers ZIP restent ou sont supprimés après la décompression, soit est très bien.
Ce que j'ai essayé jusqu'à présent.
1) j'ai prévu je pourrais utiliser de la tuyauterie, je suis nouvelle, comme ceci:
find . -name *.zip | unzip
Cela ne fonctionne pas.
2) j'ai passé un certain temps à la recherche, le plus proche que j'ai obtenu à l'aide d'une solution en ligne est:
find . -name '*.zip' -exec unzip '{}' ';'
Ce dézippe, mais se décompresse dans le répertoire de travail en cours, je les voulais pour décompresser en place. Aussi, je ne comprends pas cette commande que je voudrais que je suis en train d'apprendre.
Toute aide est très appréciée.
Merci,
source d'informationauteur ThePerson
Vous devez vous connecter pour publier un commentaire.
Cette commande recherche dans le répertoire courant et de ses sous-répertoires récursivement les fichiers avec des noms correspondant à
*.zip
modèle. Pour le fichier trouvé, il exécute la commandesh
avec deux paramètres:et
Où
<filename>
est le nom de fichier a été trouvé. Commandesh
est Unix shell interprète. Option-c
dit coquille que le prochain argument doit être interprété comme un script shell. Si le shell interprète le script suivant:Avant d'exécuter
unzip
shell étend la commande, en faisant des diverses substitutions. Dans cet exemple particulier, il remplaceavec sortie de commande
dirname <filename>
qui, de fait, les sorties de nom du répertoire où le fichier est placé. Donc, si le nom de fichier est./a/b/c/d.zip
shell se frotterunzip
comme ceci:Dans le cas où vous ZIP noms de fichier ou de répertoire de noms contiennent des espaces, utilisez ceci:
Utilisation
-execdir
au lieu de-exec
qui exécute la commande dans le répertoire où le fichier est trouvé, pas le répertoire que vous exécutezfind
.