J'ai un fichier myarchive.Zip qui contient de nombreux répertoires, fichiers, etc. Supposons que ce fichier myarchive.Zip se trouve dans un répertoire appelé "b". Eh bien, lorsque j'utilise la commande "décompressez myarchive.Zip", le système crée par défaut un répertoire appelé "myarchive" avec le contenu du fichier Zip. Je veux pas que le système crée ce répertoire "myarchive" - je veux juste que le contenu soit extrait dans le répertoire "b". Est-ce possible?
Ce que je fais maintenant, c'est simplement de lancer une commande "cp" pour copier les fichiers du répertoire nouvellement créé (dans ce cas "myarchive" vers "b") là où je les veux.
Ma version de unzip
a un -j
option pour ne créer aucun répertoire.
Donc
unzip -j /path/to/file.Zip
Extrayera tous les fichiers dans le répertoire courant sans restaurer la structure de répertoires stockée dans le fichier Zip
.
Si vous souhaitez supprimer un seul niveau de répertoires de l'archive, (extrayez myarchive/dir/file
comme dir/file
, pas file
), vous pouvez utiliser à la place bsdtar
(qui prend en charge les fichiers Zip
en plus des fichiers tar
) et son -s
option.
bsdtar -xf /path/to/file.Zip -s'|[^/]*/||'
On dirait que c'est vraiment simple avec bsdtar :
bsdtar --strip-components=1 -xvf file.Zip
Ce que la réponse acceptée ne spécifie pas comment faire, comme vous le dites dans la question, si vous souhaitez toujours extraire vers un dossier spécifique sans utiliser les chemins d'accès aux dossiers stockés dans les fichiers Zip, vous pouvez utiliser le -j
option avec -d
option de cette façon:
unzip -j /path/to/file.Zip -d other_folder
ou pour votre cas
unzip -j myarchive.Zip -d b