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");
}
}
macos
command-line
file-transfer
jamierob
la source
la source
Réponses:
Vous pouvez nous perl pour ce faire, entrez la liste des fichiers texte en tant qu'argument de ligne de commande et modifiez les chemins en fonction de votre configuration:
Edit: J'ai modifié ce programme à la demande de l'opérateur pour qu'il recurse dans le répertoire donné afin de trouver toutes les images.
la source