2 votes

Terminal unzip en dehors du répertoire par défaut

L'utilisation de la commande terminal "unzip" semble être extrêmement utile lors du déploiement d'un CMS sur un serveur distant, puisque vous pouvez transférer un zip et le décompresser à distance. Cependant, je ne trouve pas de moyen de décompresser tous les fichiers directement à la racine du répertoire dans lequel se trouve le fichier .zip. Par défaut, il crée un dossier portant le même nom que le fichier .zip et extrait les fichiers dans ce dossier, après quoi je dois exécuter une commande mv pour déplacer le contenu du dossier vers la racine.

Puis-je faire cela en une seule étape en utilisant unzip ?

2voto

alsemyonov Points 691

Essayez d'utiliser le paramètre -d pour spécifier le répertoire racine vers lequel extraire. Vous pouvez utiliser '.' ou '~' comme répertoire et éviter une situation où tout est placé dans un répertoire par défaut portant le nom du fichier zip. Voici la documentation :

[-d exdir] Un répertoire optionnel vers lequel extraire les fichiers.
Par par défaut, tous les fichiers et sous-répertoires sont recréés dans l'adresse répertoire courant ; l'option -d permet l'extraction dans un répertoire arbitraire (en supposant toujours que l'on a la permission à d'écrire dans le répertoire). Cette option ne doit pas nécessairement apparaître à à la fin de la ligne de commande ; elle est également acceptée avant la spécification du fichier zip (avec les options normales), imme- immédiatement après la spécification du fichier zip, ou entre la le fichier fichier(s) et l'option -x. L'option et le répertoire peuvent être être concaténés sans espace blanc entre eux, mais noter que cela peut entraîner un comportement normal de Shell. sup- pressé. En particulier, -d ~'' (tilde) is expanded by Unix C shells into the name of the user's home directory, but -d~'' est traité comme un sous-répertoire littéral "~~ de le répertoire courant.

0voto

polynomial Points 1474

La réponse spécifique à votre question est non. Le programme unzip fourni avec OS X ne permet pas de modifier les répertoires du fichier zip à la volée. Une chose à noter cependant, c'est que zip ne crée pas le répertoire. Il fait partie de l'archive. Une archive zip correctement créée n'aura pas ce problème si vous contrôlez le processus de création :

$ ls -l
total 0
-rw-r--r--  1 bsmith  staff  0 Sep 30 22:01 b
-rw-r--r--  1 bsmith  staff  0 Sep 30 22:01 c
$ zip -r a.zip .
  adding: b (stored 0%)
  adding: c (stored 0%)
$ cd ../b
$ unzip ../a/a.zip
Archive:  ../a/a.zip
 extracting: b                       
 extracting: c                       
$ ls -l
total 0
-rw-r--r--@ 1 bsmith  staff  0 Sep 30 22:01 b
-rw-r--r--@ 1 bsmith  staff  0 Sep 30 22:01 c

0voto

Chirag Points 101

Vous pouvez utiliser le drapeau -j pour la même chose.

Exemple :

$ mkdir Testing && cd Testing
~/Testing $ touch one two three four five
~/Testing $ cd ..
$ zip -r Testing Testing
$ ls -la | grep Testing

drwxr-xr-x   7 username  staff    238 Aug  2 20:03 Testing
-rw-r--r--   1 username  staff    924 Aug  2 20:03 Testing.zip

Maintenant,

$ rm -rf Testing
$ unzip -j Testing.zip
$ ls -la

-rw-r--r--   1 username  staff     0 Aug  2 20:03 five
-rw-r--r--   1 username  staff     0 Aug  2 20:03 four
-rw-r--r--   1 username  staff     0 Aug  2 20:03 one
-rw-r--r--   1 username  staff     0 Aug  2 20:03 three
-rw-r--r--   1 username  staff     0 Aug  2 20:03 two

Cela vous permettra d'extraire le contenu de l'archive et non le dossier contenu.

$ man unzip

-j     junk paths.  The archive's directory structure is not recreated;
       all files are deposited in the extraction directory 
       (by default, the current one).

Pour plus d'informations, reportez-vous aux pages de manuel de unzip.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X