Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Directory Recursion from the Command Line?

by dvergin (Monsignor)
on Apr 15, 2003 at 04:32 UTC ( [id://250472]=perlquestion: print w/replies, xml ) Need Help??

dvergin has asked for the wisdom of the Perl Monks concerning the following question:

I don't use one-liners routinely, but when the boss-man asked for a quicky to make the same change in 150 files in a directory, I dashed off:
perl -pi -e 's/this/that/' *
...and looked like a hero.

Then he said, "Make it work for a whole directory branch." I was stumped. I can (and did) write a short script to do this. But I have a lingering suspicion that there is some command-line magic that can, in effect do:

perl -r -pi -e 's/this/that/' *
Where the '-r' switch works as in other Linux commands to cause the requested operation to be performed on all directories including and under the current one.

Sadly, there is no '-r' switch for the Perl executable.

Does anyone have a quick command-line hack (rather than a script) to accomplish the requested task.

------------------------------------------------------------
"Perl is a mess and that's good because the
problem space is also a mess.
" - Larry Wall

Replies are listed 'Best First'.
Re: Directory Recursion from the Command Line?
by Anonymous Monk on Apr 15, 2003 at 05:00 UTC
      Spooky!

      I had just posted and gone to read other current items and there it was in the thread you have pointed to.

Re: Directory Recursion from the Command Line?
by crouchingpenguin (Priest) on Apr 15, 2003 at 13:08 UTC

    You could use a quick shell like:

    for file in `find . -type f -print`;do cp $file $file~ ; cat $file |se +d -e 's/this/that/' > $file.new; mv $file.new $file;done

    cp
    ----
    "Never be afraid to try something new. Remember, amateurs built the ark. Professionals built the Titanic."

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://250472]
Approved by Paladin
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2024-04-18 03:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found