gilou Modérateur Modzilla | La vous avez toutes les billes. Vous pouvez écrire cela en perl, python, ruby, ou tout autre langage un peu moderne qui sait maniper les systèmes de fichier,les expression régulières et utiliser une liaison ftp.
En perl ce serait qque chose comme:
Code :
#!/usr/bin/perl use v5.10.1; # code propre use strict; use warnings; use autodie; # my $dir = '/.../.../'; #mettre le répertoire correct ici my $dir = '.'; #my $name_pattern = "avis_(\d+)_\d+"; my @files = grep { -f "$dir/$_" } readdir($dh); # on récupère laliste des fichiers my %transfer; foreach (@files) { if (/^avis_(\d+)_\d+$/) { # si nom du fichier est 'avis_chiffres_chiffres' } else { $transfer{$1} = [$_]; } } } use Net::FTP; my $remote_dir = '/.../.../'; #mettre le répertoire correct ici my ($domain, $username, $password) = ("some.host.name", "mylogin", "mypasswd" ); #idem pour les infos my $ftp = Net:: FTP->new ($domain, Debug => 0) or die "Cannot connect to $domain: $@"; $ftp->login ($username, $password) or die "Cannot login ", $ftp->message; $ftp->binary(); $ftp->cwd ("$remote_dir" ) or die "Cannot change to remote base $remote_dir ", $ftp->message; foreach my $rdir (keys %transfer) { unless ($ftp->cwd("$rdir" )) { $ftp->mkdir("$rdir" ); $ftp->cwd ("$rdir" ) or die "Cannot change working directory to $_ ", $ftp->message; } foreach (@{$transfer{$rdir}}) { $ftp->put ("$_" ) or die "put $_ failed ", $ftp->message; } $ftp->cwd (".." ) or die "Cannot change back to remote base ", $ftp->message; } $ftp->quit;
|
c'est a adapter selon vos besoins, ici, il est supposé que les répertoires cibles sont tous situés dans un répertoire commun, $remote_dir, mais ça peut très bien être autrement enchangeant un peu le code.
A+, Message édité par gilou le 16-01-2013 à 15:50:03 ---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --
|