Je cherche à rechercher puis à copier tous les fichiers dont les noms de fichier correspondent dans un fichier texte d'un répertoire (avec des sous-répertoires) d'un serveur vers un autre répertoire. J'ai trouvé une excellente solution (bien que très lente) pour Windows ici .
dans un fichier .bat, quelque chose comme:
for /f "delims=" %%i in (text-list.txt) do echo D|xcopy "\\SERVER\FOLDER\%%i?" "c:\temp" /i /z /y /s
Comment puis-je accomplir cela sur Mac / Linux?
cela fonctionne pour les fichiers qui se trouvent tous dans le même répertoire, mais je ne vois pas comment rechercher des sous-répertoires dans le dossier source:
rsync --files-from ~/filelist.txt . ~/destfolder
basé sur l'exemple de @neofug, il s'agit d'un script Perl pour le faire. cela fonctionne bien sauf qu'il ne cherche pas dans les sous-dossiers du dossier src:
#!/usr/bin/env perl
use strict;
my $textFile = shift @ARGV;
my $filenames = {};
open F1, "<", $textFile or die "Cannot open file $textFile! $!\n";
while ( <F1> ){
chomp;
$filenames->{$_}++;
}
close(F1);
my $imgDir = "/Users/username/srcfolder";
chdir($imgDir);
my @imgList = glob "*.txt";
foreach(@imgList){
if($filenames->{$_}){
system("/bin/cp $_ /Users/username/destfolder");
}
}