Rediriger sortie dézipper dans le répertoire particulier en utilisant Perl

StackOverflow https://stackoverflow.com/questions/1917009

  •  20-09-2019
  •  | 
  •  

Question

Je veux dire décompressez fichier compressé, files.zip, dans un répertoire différent de mon répertoire de travail. Dites, mon répertoire de travail est /home/user/address et je veux décompresser les fichiers dans /home/user/name.

Je suis en train de le faire comme suit

#!/usr/bin/perl
use strict;
use warnings;

my $files= "/home/user/name/files.zip"; #location of zip file
my $wd = "/home/user/address" #working directory
my $newdir= "/home/user/name"; #directory where files need to be extracted
my $dir = `cd $newdir`;
my @result = `unzip $files`; 

Mais quand exécuter le dessus de mon répertoire de travail, tous les fichiers sont décompressés dans le répertoire de travail. Comment puis-je rediriger les fichiers non compressés $newdir?

Était-ce utile?

La solution

unzip $files -d $newdir

Autres conseils

Utilisez la commande Perl

chdir $newdir;

et non pas les guillemets obliques

`cd $newdir`

qui vient lancer un nouveau shell, changer le répertoire dans cette coquille, puis la sortie.

Bien que cet exemple, l'option -d est probablement à dézipper la façon la plus simple de faire ce que vous voulez (comme mentionné par ennuikiller), pour d'autres types de changement-annuaire, j'aime le module File :: chdir, ce qui permet vous localiser les changements de répertoire, lorsqu'il est combiné avec l'opérateur perl « local »:

#!/usr/bin/perl
use strict;
use warnings;
use File::chdir;

my $files= "/home/user/name/files.zip"; #location of zip file
my $wd = "/home/user/address" #working directory
my $newdir= "/home/user/name"; #directory where files need to be extracted
# doesn't work, since cd is inside a subshell:   my $dir = `cd $newdir`;
{ 
   local $CWD = $newdir;
   # Within this block, the current working directory is $newdir
   my @result = `unzip $files`;
}
# here the current working directory is back to what it was before

Vous pouvez également utiliser l'Archive :: module Zip. Regardez spécifiquement au extractToFileNamed:

"extractToFileNamed (fileName $)

me extraire dans un fichier avec le nom donné. Le fichier sera créé avec les modes par défaut. Les répertoires seront créés au besoin. L'argument $ fileName doit être un nom de fichier valide sur votre système de fichiers. Retours AZ_OK sur la réussite. «

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top