[Décompresser] Comment décompresser uniquement les fichiers arbitraires de ceux avec des délimiteurs de répertoire antislashés dans les fichiers zip

C'est peut-être évident, mais je n'ai pas trouvé la réponse même si je l'ai recherchée dans le sentiment, alors je l'écrirai dans le but de la rappeler.

Qu'est-il arrivé

Lorsque vous souhaitez décompresser uniquement un fichier spécifique avec la commande unzip

Si vous avez un fichier zip comme celui ci-dessous

hoge.zip


$ zipinfo -1 hoge.zip
aaa/bbb/ccc.txt
ddd/eee/fff.jpg
ggg/hhh/iii.log

Ceci peut être réalisé avec unzip {zip à décompresser} {chemin du fichier que vous voulez extraire}.

$ unzip hoge.zip aaa/bbb/ccc.txt

Mais si le délimiteur de répertoire dans le fichier zip était une barre oblique inverse

hoge_bs.zip


$ zipinfo -1 hoge_bs.zip
aaa\bbb\ccc.txt
ddd\eee\fff.jpg
ggg\hhh\iii.log

Si vous entrez une commande avec la même tonalité, une erreur se produira.

$ unzip hoge_bs.zip aaa\bbb\ccc.txt
Archive:  hoge_bs.zip
caution: filename not matched:  aaabbbccc.txt

essai et erreur

Dois-je le mettre entre guillemets simples? Je pense que c'est aussi inutile

$ unzip hoge_bs.zip 'aaa\bbb\ccc.txt'
Archive:  hoge_bs.zip
caution: filename not matched:  aaa\bbb\ccc.txt

Le chemin est-il réellement converti en barre oblique au moment de l'expansion? Je l'ai essayé, mais c'est aussi inutile

$ unzip hoge_bs.zip 'aaa/bbb/ccc.txt'
Archive:  hoge_bs.zip
caution: filename not matched:  aaa/bbb/ccc.txt

Comment ça marche

Cela a bien fonctionné quand je lui ai donné deux barres obliques dans le dos

$ unzip hoge_bs.zip 'aaa\\bbb\\ccc.txt'
Archive:  hoge_bs.zip
warning:  hoge_bs.zip appears to use backslashes as path separators
  inflating: aaa/bbb/ccc.txt

Quand je fais ça comme ça, je commence à regretter que ce soit du bon sens ...

Recommended Posts

[Décompresser] Comment décompresser uniquement les fichiers arbitraires de ceux avec des délimiteurs de répertoire antislashés dans les fichiers zip
Comment obtenir une liste de fichiers dans le même répertoire avec python
Extraire uniquement le nom du fichier à l'exclusion du répertoire dans le répertoire
Décompressez tous les fichiers zip dans le répertoire actuel
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Comment connaître le répertoire actuel en Python dans Blender
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Comment modifier le répertoire statique par défaut dans Flask
Comment se connecter automatiquement comme 1Password depuis CLI
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom
Décompressez le fichier zip Internet
Comment donner et signifier l'option des contraintes dans scipy.optimize.minimize
Comment déterminer qu'une clé croisée a été entrée dans Python3
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
Enregistrez le fichier d'authentification Pydrive dans un répertoire différent du script
[Ln] Comment coller le lien symbolique du répertoire est compliqué
[Python] Que faire en cas de violation de PEP8 lors du processus d'importation à partir du répertoire ajouté à sys.path