2009-10-22 7 views

Répondre

1

Que diriez-vous (sur une seule ligne):

find . \(-type d ! -name . -prune \) -o \(-type f -name "*.xml" -print \) | 
    xargs perl -i.old -p -e 's-/example/test/temp-/testing/in/progress/-g' 
+0

grâce à la solution. Mais le contrôle semble aller dans une sorte de boucle infinie, créant des fichiers comme filename.old filename.old.old, filename.old.old.old etc .. Comment puis-je le modifier de telle sorte que pas de sauvegarde (.old) les fichiers sont-ils générés? beaucoup de thx. – novice

+0

Pourquoi n'utilisez-vous pas simplement '-maxdepth'? 'trouver. -maxdepth 1 -type f -name "* .xml" -print' - Aussi, vous devriez utiliser '-print0' avec' find' et '-0' avec xargs. –

+0

Dennis - toutes les trouvailles ne sont pas égales. Certains n'ont pas maxdepth :-( novice - pour se débarrasser des fichiers .old, changez perl -i.old en perl -i (ce qui veut dire que si vous avez un problème avec votre regexp, vous n'avez pas de sauvegarde revenir à) – toolkit

0

utilisez sed (1).

en général, il est plus sûr d'utiliser un processeur xslt aux fichiers XML de massage, mais dans cet exemple particulier, les chances d'une certaine représentation XML « funky » causant des problèmes est assez éloigné ...

Questions connexes