[Matlab]Copie plusieurs fichiers

Résolu/Fermé
Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 - 24 mars 2009 à 14:12
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 mars 2009 à 15:41
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
24 mars 2009 à 14:17
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 lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 24
24 mars 2009 à 15:48
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
24 mars 2009 à 16:30
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 lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 24
25 mars 2009 à 09:32
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 lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 24
25 mars 2009 à 13:53
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
25 mars 2009 à 14:06
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 lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 24
25 mars 2009 à 14:19
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 lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 24
25 mars 2009 à 15:28
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
25 mars 2009 à 15:41
0