2009-05-30 5 views
0

J'essaie de modifier certaines lignes dans plusieurs fichiers (dispersés dans des sous-dossiers) sans avoir à modifier chaque fichier un par un. J'ai été donné par Chas. les éléments suivantsRecursive Bulk Edit sous Linux

perl -pi.bak -e 's{[^/]Css/Template.css}{/Css/Template.css}' * 

et cela a fonctionné comme un charme, mais je me demandais si cette commande ou similaire peut être fait de manière récursive en un seul coup

Répondre

3
find . -type f -exec perl -pi.bak -e 's{[^/]Css/Template.css}{/Css/Template.css}' '{}' '+' 

Cela s'appliquera à tous les fichiers dans le répertoire courant et tous sous-répertoires. Cela ne suivra pas les liens symboliques. Vous pouvez également réduire la portée de la recherche avec une directive -name.

+0

Merci, ça marche! Je pensais ajouter -r le ferait récursivement, heh. Maintenant, il est temps de supprimer ces fichiers bak ... – damx

+0

Vous pouvez utiliser find encore pour se débarrasser facilement de ces fichiers .bak aussi :) – bdonlan

+0

* gifler dans la tête * comment embarrassant ... détourner le regard – damx