J’ai un problème avec un projet web, basé sur un cms open source que je ne citerai pas mais qui est une véritable usine à gaz, faisant constamment appelle à des tas et des tas de fichiers un peu partout: les fichiers xml des flux rss ne sont pas valides, parce qu’il les sort avec un saut de ligne avant la balise <?xml.
donc, je me dit qu’un des ouatmille fichiers du projet doit comprendre un saut de ligne avant la première balise “<?php" ou après la fermeture "?>”. Je cherche donc un logiciel qui me permette de parser tous les fichier d’un répertoire et de ses sous répertoires, pour trouver un saut de ligne précédent un <? ou suivant un ?>.
j’ai essayé quelques éditeurs de textes et autres outils de recherches que je connais un peu, et malheureusement les seuls auxquels j’ai pu faire comprendre que la chaine que je voulais chercher comprend un retour chariot ne pouvaient le faire que sur un seul fichier ouvert et refusaient obstinément d’effectuer la recherche sur tout un répertoire.
Bref, quelqu’un connait-il la perle rare qui m’évitera de devoir inspecter un à un quelques centaines de fichiers?
perso avec ultraedit j’y arrive.
Suffit de selectionner un retour chariot et ce que tu veux.
Cela apparait comme un caractere bizarre et ta chaine.
Sinon en gros vite fait (python inside)
edit regexp corrigé avec : http://regexpal.com/
import os
liste = os.listdir('c:/repertoire')
for fichiers in liste :
if os.path.isfile(fichiers):
fichier=open(fichiers, "r")
contenu=fichier.read()
#a verifier les regexp
contenu = contenu.replace('\n<\?','<?')
contenu = contenu.replace('\n\?>','?>')
La version recursive vite fait : (a tester aussi)
import os
liste = os.listdir('c:/repertoire')
for fichiers in liste :
if os.path.isfile(fichiers):
fichier=open(fichiers, "r")
contenu=fichier.read()
contenu = contenu.replace('\n<\?','<?')
contenu = contenu.replace('\n\?>','?>')
else:
liste.append(os.listdir(fichiers))
J’utilise Agentransack qui est très puissant et en même temps accessible. Il a un assistant de recherche d’expression qui est bien utile quand on ne maitrise pas les expressions régulières.