12
votes

Comment puis-je boucler à travers tous les fichiers d'un dossier à l'aide de C?

Je veux supprimer une sous-chaîne particulière de tous les noms de fichier dans un répertoire:

- comme 'xyz.com' de 'futurama s1e20 - [xyz.com] .avi' -

Donc, fondamentalement, je dois fournir la méthode avec une sous-chaîne souhaitée, et elle doit boucler tous les noms de fichiers et comparer.

Je ne peux pas comprendre comment boucler à travers tous les fichiers d'un dossier à l'aide de c.

c

0 commentaires

6 Réponses :


2
votes

Jetez un coup d'œil à Dirent.h .


0 commentaires

6
votes

Vous pouvez utiliser fts (3) pour boucler tout Fichiers dans un dossier utilisant C:

http: // keramida.wordpress.com/2009/07/05/fts3-or-avoiding-a-rinvent-the-wheel/


0 commentaires

1
votes

Les fonctions de clé sont _findfirst, _findnext et _findcler xxx


1 commentaires

L'API est différente sous Linux / Unix.



13
votes
#!/bin/bash -f
dir=$1
for file in `ls $dir`
do
 if [ -f $dir/$file ];then
  new_name=`echo "$file" | sed s:to_change::g`
  mv $dir/$file $dir/$new_name
 fi
done


0 commentaires

1
votes

fts a une belle interface, mais il est de 4,4BSD et n'est pas portable. (J'ai récemment été mordu à l'arrière par certains logiciels avec une dépendance inhérente à la FTS.) Opendir et Readdir sont moins amusants mais sont des normes POSIX et sont portables.


0 commentaires

2
votes

Je sais que cette réponse me fera voter, mais votre problème est parfait pour un script shell, (ou un script .cmd), un script PHP ou un script PERL. Le faire en C est plus de travail que le problème vaut.


0 commentaires