J'ai mis en place un script pour faire quelques opérations de fichier pour moi. J'utilise l'opérateur générique *
pour appliquer des fonctions à tous les fichiers d'un type, mais il y a une chose que je ne comprends pas. Je peux unzip
tous les fichiers dans un dossier comme celui-ci
unzip "*".zip
Cependant, pour supprimer tous les fichiers zip par la suite, je dois faire
rm *.zip
Autrement dit, il ne veut pas les guillemets. La décompression, en revanche, ne fonctionne pas si je lui donne simplement le * (me prévient que "les fichiers ne correspondent pas").
Pourquoi est-ce différent? Pour moi, cela semble être exactement la même opération. Ou est-ce que j'utilise mal le joker?
Les introductions à la wildcard dans Unix n'entrent pas vraiment dans cela, et je ne pouvais rien localiser dans la documentation rm
ou zip
.
J'utilise le terminal sur un Mac (Yosemite).
unzip
applique le glob au contenu d'une archive; vous ne pouvez pas les obtenir de bash avec un joker. (Vous auriez besoin de `` `` pour le f in unzip -l archive.zip
; do ... done`)
unzip
accepter les globs pour correspondre dans un fichier zip unique. Mais c'est différent. J'ai effectivement essayé unzip '*.zip'
dans un répertoire avec plusieurs fichiers zip, et il extrait tous les fichiers de tous les zips. Comme je le disais, super-bizarre. tar
n'a pas de mode de fonctionnement comme ça.
unzip
je pouvais le faire sans lafor f in *.zip;do...done
boucle de shell normale . Une interface utilisateur en ligne de commande aussi étrange que celle de type Unix.