Kaip pakeisti daug failų komandinės eilutės ir perl pagalba
Programuodamas patekau į tokią situaciją, kurioje reikėjo surasti tam tikrus failus, kuriuose nėra aprašytas klasės parametras ir įrašytą tą trūkstamą parametrą į klasės vidų.
Pasinaudodamas komandine eilute ir nedideliu perl skriptu tai nesunkiai padariau.
Perl skriptas atrodo taip:
print; if (/^class/) { use File::Basename; my $layout = basename(dirname($ARGV)); print "\n public \$layout = '$layout';\n"; }
O komanda atrodo taip:
find -wholename "*/themes/*/layouts/*/config.php" \ | xargs grep -L "public \$layout" \ | while read f ; do \ perl -ni /tmp/replace.pl $f ; \ done
Naudojantis komandine eilute, labai nesunkiai galima automatizuoti įvairiausias užduotis. Šiame pavyzdyje, vietoje to, kad keliaučiau per visus failus ir rankomis viską keisčiau, tiesiog pasinaudojau nedidele komanda :)