[C]Comment lister les fichiers *.txt d'un répertoire sous linux?

Comment lister les fichiers *.txt d'un répertoire sous linux? [C] - C - Programmation

Marsh Posté le 22-04-2005 à 22:12:19    

Bonjour,
j'aimerais savoir comment obtenir la liste des fichiers *.txt d'un répertoire. Quelqu'un aurait il un programme pour cela?
 
Je veux que ce programme donne le nom des fichiers *.txt dans un répertoire... Je bloque dessus.
Merci


Message édité par salutsava le 22-04-2005 à 22:19:20
Reply

Marsh Posté le 22-04-2005 à 22:12:19   

Reply

Marsh Posté le 22-04-2005 à 22:18:47    

Reply

Marsh Posté le 23-04-2005 à 09:09:27    


 
Deux sujets identiques postés le même jour ! franchement ya de l'abus. Qu'on ne trouve pas une info postée il y a 6 mois je veux bien... mais là "salutsava" dépasse un peu les bornes. Faut qu'il arrête un peu de glandouiller et qu'il s'intéresse aux autres s'il veut qu'on s'intéresse à lui !!! :non:


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 23-04-2005 à 11:32:50    

ls *.txt


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 23-04-2005 à 12:33:16    

Sve@r a écrit :

Deux sujets identiques postés le même jour ! franchement ya de l'abus. Qu'on ne trouve pas une info postée il y a 6 mois je veux bien... mais là "salutsava" dépasse un peu les bornes. Faut qu'il arrête un peu de glandouiller et qu'il s'intéresse aux autres s'il veut qu'on s'intéresse à lui !!! :non:


"Et je casse, et je casse..." -- BdN
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-04-2005 à 15:33:42    

En effet.
Le ls *.txt, je connais bien.
Mais moi, je suis en train d'écrire un programme qui recherche un mot dans les fichiers *.txt d'un repertoire, mais je sais pas comment arriver a lister les fichiers ainsi trouvés...
Dans l'autre sujet, il s'agit du tri.
Il va falloir utiliser opendir, closedir, et readdir, mais je ne trouve pas les lignes exactes.


Message édité par salutsava le 23-04-2005 à 15:34:29
Reply

Marsh Posté le 23-04-2005 à 16:12:54    

salutsava a écrit :

En effet.
Le ls *.txt, je connais bien.
Mais moi, je suis en train d'écrire un programme qui recherche un mot dans les fichiers *.txt d'un repertoire, mais je sais pas comment arriver a lister les fichiers ainsi trouvés...


 
Oui, c'est vrai que c'est assez ardu comme problème... grep -l "mot" *.txt
 

salutsava a écrit :

Dans l'autre sujet, il s'agit du tri.


Pour trier les fichiers d'un répertoire il faut d'abord les lire.
 

salutsava a écrit :

Il va falloir utiliser opendir, closedir, et readdir, mais je ne trouve pas les lignes exactes.


 
man opendir
man readdir
man closedir
 
opendir te renvoie un pointeur de type "DIR*" (un petit peu comme "fopen" te renvoie un "FILE *" )
Tu utilises ce pointeur dans "readdir()" en lui balançant aussi l'adresse d'une variable de type "struct dirent". La fonction va te remplir ta variable avec des infos sur les fichiers du répertoire traité (un peu comme "fgets" où tu lui balances l'adresse d'un tableau qui sera rempli avec plein d'octets en provenance du fichier lu) => une boucle est nécessaire parce que tu as beaucoup de fichiers à traiter
Tu fermes le répertoire une fois traité en utilisant "closedir" (un petit peu comme "fclose" )
 
Voilà...  "Si tu sais lire, tu peux y arriver" -- BdN


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 23-04-2005 à 17:58:07    

En fait, j'ai le code sous windows.
Je voudrais juste l'adapter pour linux...
 

Code :
  1. // Cette fonction liste les fichiers texte contenus dans le répertoire
  2. void obtenir_noms_fichier(void)
  3. {
  4. WIN32_FIND_DATA File;
  5. HANDLE hSearch;
  6. FILE *fichier_index;
  7. // le fichier index.txt, s'il existe, est effacé (première version du programme)
  8. fichier_index=fopen("index.txt", "w" );
  9. if (fichier_index!=NULL)
  10. {
  11.  hSearch = FindFirstFile("*.txt", &File); // on commence la recherche des fichiers .txt
  12.  if (hSearch != INVALID_HANDLE_VALUE) // si on en a trouvé un
  13.  {
  14.   do
  15.   {
  16.   // on fait atention à ne pas lire le fichier index.txt
  17.    if (strcmp("index.txt", File.cFileName)!=0)
  18.    {
  19.     printf("nom fichier : %s\n", File.cFileName);
  20.     ajouter_fichier_a_index(File.cFileName, fichier_index);
  21.    }
  22.   } while(FindNextFile(hSearch, &File)); // tant qu'on continueà trouver des fichiers .txt
  23.   FindClose(hSearch);
  24.  }
  25.  fclose(fichier_index);
  26. }
  27. else
  28. {
  29.  printf("impossible d'ouvrir le fichier \"index.txt\"\n" );
  30.  getchar();
  31.  exit(0);
  32. }
  33. }


 
 
 
Comment peut on faire cela?

Reply

Marsh Posté le 23-04-2005 à 18:05:39    

En n'utilisant pas les libs Windows, mais les libs standard.
 
La réponse figure dans ce post, la commande "man" est ton amie.

Reply

Marsh Posté le 23-04-2005 à 18:21:22    

Le probleme c'est je n'ai justement pas pour le moment linux où je suis. Donc je ne peux pas faire appel a MAN...!

Reply

Marsh Posté le 23-04-2005 à 18:21:22   

Reply

Marsh Posté le 23-04-2005 à 18:28:07    

Je cherche juste à chercher dans un répertoire, les fichiers *.txt
Je ne vais donc pas ouvrir un repertoire et le fermer.
Cela parait bête mais je n'y arrive pas

Reply

Marsh Posté le 23-04-2005 à 18:28:58    

"man opendir" sous Google ça marche aussi. :D
 
Premier lien trouvé en moins de 10s en tapant "man opendir" :  
http://www.rt.com/man/opendir.3.html

Reply

Marsh Posté le 23-04-2005 à 18:39:11    

merci ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed