[Matlab]Copie plusieurs fichiers

Résolu
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Pour copier un fichier :
copyfile('fichier_source','fichier_destination');

Mais voilà je traites beaucoup de fichiers et j'aimerais copier les fichiers qui correspondent à mon critère dans une autre directory:


----------------------------------------------------------
[...]
if Correl > abs(0.89)
disp('Bruit électronique')
compteur_bruit=compteur_bruit+1;

else
disp('signal')
compteur_signal=compteur_signal+1;
copyfile('fichier_source','fichier_destination');
end
[...]
----------------------------------------------------------

En gros, comme vous voyez ci-dessus, j'aimerais copier tous les fichiers dont le signal a un coefficient de corrélation < abs(0.89). Mais je dois donc le faire pour beaucoup de fichiers et j'aimerais que ces fichiers copiés aillent non seulement dans une autre directory mais également gardent le même nom que le fichier source.

Merci
A voir également:

9 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
copyfile('fichier_source',['chemin_du_fichier/' 'fichier_source']);
il suffot de faire une concaténation de chaine.
0
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   24
 
Ok merci, mais je me heurte en faite un peu toujours au même problème : la syntaxe pour lire/appeler/écrire plusieurs fichiers.

En gros mon programme ouvre fichier par fichier.. comment nommer et donc copier les "fichier_source" ? et encore plus GRAVE comment faire des différentes directory...

J'explique le fond de mon problème pour mieux comprendre :

J'ai pleins de fichiers qui sont dans plein de dossier suivant cette arborescence :

ans/mois/jour/heure/AnsMoisJour_heureSecondeDiziemeCentième.txt

(note : AnsMoisJour_heureSecondeDiziemeCentième.txt = nom des fichiers)

(exemple : le fichier 091204_22158598.txt se trouve dans C:\2009\12\04\22 avec pleins d'autres fichiers du 4 décembre 2009 à 22h)

Et j'aimerais copier les bons fichiers (ceux qui respectent une certaine condition) dans une nouvelle arborescence de la même forme ! Pour à la fin avoir une nouvelle copie de tous les dossiers mais avec uniquement les bons fichiers.

Merci

PS : si je demande de l'aide, si je ne le fais pas à la main un par un... c'est parce que là je dois trouver la MEILLEURE solution (ie la plus rapide) car j'ai plus de 2 000 000 de fichiers à traiter...
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Tu n'arrive toujours pas à utiliser rdir ???
J'ai du mal à comprendre ton problème, où est la difficulté ?
Mais si tu as le nom du fichier source, il est simple d'avoir le nom du fichier destination de copie.
0
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   24
 
Bah ouais chaud

Voilà ce qu'il faudrait faire :

si le fichier commence par 09 alors il va déjà dans le dossier C:\2009, si il continu en 04 > il va dans le dossier C:\2009\04, si il continu en 01 > il va dans le dossier C:\2009\04\01 et enfin si il continu en 22 il va dans C:\2009\04\01\22

Exemple: Syntaxe du fichiers : 090401_22154589.txt

Bien sur il ne s'agit pas de copier 4 fois le dossier mais bien, une seule fois, à la dernière directory : C:\2009\04\01\22
Et tout ça, en créant bien sur une routine automatique: en interpetant par exemple la directory du fichier source pour créer une nouvelle directory équivalente mais dans un tout autre dossier :
ex : que le bon fichier 090401_22154589.txt qui se trouve dans C:\2009\04\01\22 se retrouve dans C:\fichierOK\2009\04\01\22

J'avoue avoir un peu de mal, effectivement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   24
 
Bon j'ai réussi à creer des dossiers suivant le nom des fichiers :

-------------------------------------------------------------------------------------------
%Donne nom du fichier (filename) et récupère : année, mois, jour, heure
[dir, filename] = fileparts(A(p).name)
annee = filename(1:2);
mois = filename(3:4);
jour = filename (5:6);
heure = filename(8:9);

%création de l'arborescences des répertoires utiles
mkdir(annee);
mkdir(annee,mois);
mkdir(fullfile(annee,mois),jour);
mkdir(fullfile(annee,mois,jour),heure);
-------------------------------------------------------------------------------------------
Exemple: soit le fichier: 090805_22545898.txt
donc
filename = 090805_22545898
annee = 09
mois = 08
jour = 05
heure = 22
Le programme me créer aussi une arborescence C:\09\08\05\22

Mais voilà, maintenant je cherche à copier ce fichier dans la directory : C:\09\08\05\22 fraichement créée.
Enfin je cherche une routine pour copier tous les fichiers qui passent dans mon programme dans leurs dossiers d'heure respectifs.

Merci
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Ba ! Il suffit de concaténé les strings !
copyfile(filename,['c:\\',annee,'\\',mois,'\\',jour,'\\',filename]);
je met '\\' à la place de '\' car j'utilise la notation C qui est peut être respecté en MATLAB.
0
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   24
 
Oui c'est ce que tu m'avais expliquer plus en haut. Cependant il reconnait pas le filename comme le fichier existant mais juste comme une chaine de caractère... Je dois (je pense) vraiment définir "source" comme mon point .txt mais je vois pas comment implémenter cette définition dans copy.

Merci !
0
Newenda Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   24
 
ok trouvé !
Il faut juste recomposer le nom du fichier :

full_filename = fullfile(dir, [filename, ext]);


merci encore à vous.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
0