J'ai un fichier ZIP dans lequel il y a un répertoire supérieur où tous les fichiers sont stockés:
Release/
Release/file
Release/subdirectory/file
Release/subdirectory/file2
Release/subdirectory/file3
Je veux extraire tout sous Release
, en préservant la structure du répertoire, mais quand je lance ceci:
unzip archive.zip Release/* -d /tmp
Il crée le Release
dossier supérieur :
/tmp/Release/
/tmp/Release/file
/tmp/Release/subdirectory/file
/tmp/Release/subdirectory/file2
/tmp/Release/subdirectory/file3
Comment puis-je tout extraire à l'intérieur Release
sans créer de Release
dossier, comme ceci:
/tmp/
/tmp/file
/tmp/subdirectory/file
/tmp/subdirectory/file2
/tmp/subdirectory/file3
command-line
unzip
Moïse
la source
la source
unzip archive.zip && mv Release/* .
Release
dossierRéponses:
Dans votre cas, essayez dans le dossier cible:
Ensuite, vous devez supprimer le lien que vous avez créé:
la source
Le
j
drapeau devrait empêcher la création de dossiersunzip -j archive.zip -d .
Depuis la page de manuel :
la source
-j
option vide tous les fichiers dans le répertoire courant sans tenir compte de la structure du répertoire dans l'archive.Script Python pour aplatir l'arbre extrait
Le script écrit ci-dessous extrait le fichier zip et déplace les fichiers contenus dans le répertoire le plus haut vers le répertoire de travail actuel. Ce script rapide est conçu pour répondre à cette question particulière où il existe un seul répertoire supérieur contenant tous les fichiers, bien qu'avec quelques modifications, il puisse être adapté à des cas plus généraux.
Essai
Voici un exemple de la façon dont le script est censé fonctionner. Tout est extrait dans le répertoire de travail actuel, mais le fichier source peut être complètement dans le répertoire différent. Le test est effectué sur l'archive zip de mon référentiel github personnel.
Testez avec le fichier source dans un emplacement différent
la source