how can I use perl to do substitution for all files of one folder in one go? E.g., to substitute <> in all markdown files into `<>`.
Thanks a lot for your kind help.
BR
Wei
Last edited: 2013-04-15 14:28:24 +0200 (CEST)
#!/usr/bin/perl$/=undef;for(glob'*'){nextunless-f;open(my$fh,'+<',$_) or die"$_ $!\n";(my$txt=<$fh>)=~s/<>/`<>`/gs;seek($fh,0,0);print$fh$txt;}
Last edited: 2013-04-15 16:46:13 +0200 (CEST)
+3 replies
Raubtier
2013-04-15 17:09
User since 2012-05-04
1075
Artikel BenutzerIn
I guess I'd have used a combination of shell and Perl:
for i in *(.) ; do perl -pi -e 's/your substitution/here/' ; done
+2 replies
Linuxer
2013-04-15 17:45
User since 2006-01-27
3890
Artikel HausmeisterIn
Welche Shell verwendet diese Syntax? Speziell das *(.) ist mir und meiner Bash unbekannt.
Und die Schleife ist nicht zwingend notwendig.
perl -pi -e 's/your substitution/here/' * sollte das auch schon tun.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Raubtier
2013-04-15 20:44
User since 2012-05-04
1075
Artikel BenutzerIn
Mit zsh geht das so. Mit *(/) bekommst du analog alle Verzeichnisse. Mit sowas wie **/*(/) bekommst du auch rekursiv alle Verzeichnisse.
Aber du hast natürlich recht, meine Schleife ist unnötig.