Je veux supprimer une sous-chaîne particulière de tous les noms de fichier dans un répertoire: P>
- comme 'xyz.com' de 'futurama s1e20 - [xyz.com] .avi' - p> blockQuote>
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. P>
Je ne peux pas comprendre comment boucler à travers tous les fichiers d'un dossier à l'aide de c. P>
6 Réponses :
Vous pouvez utiliser fts (3) code>
pour boucler tout Fichiers dans un dossier utilisant C: P>
http: // keramida.wordpress.com/2009/07/05/fts3-or-avoiding-a-rinvent-the-wheel/ p>
Les fonctions de clé sont _findfirst, _findnext et _findcler
L'API est différente sous Linux / Unix.
#!/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
fts code> 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 code> et
Readdir code> sont moins amusants mais sont des normes POSIX et sont portables. P >
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. P>