On Thu, 2009-11-19 at 17:43 -0800, Daevid Vincent wrote: > I was reading this: http://pear.php.net/manual/en/standards.including.php > and it states: > > "Note: include_once and require_once are statements, not functions. > Parentheses should not surround the subject filename." > > I never knew that. I've always (wrongly) used: > > require_once('/path/to/my/file'); > > Anyone have a bash command line snippet (or other code is fine too I guess) > that will fix all my directory tree? > > The tricks are that I think there can be several variations and several > instances with a given file too: > > require_once('/path/to/my/file'); > require_once ('/path/to/my/file'); > require_once("/path/to/my/file"); > require_once(ROOTPATH."/my/file"); > > etc. Note the space before the parens, the single vs. double quotes and the > use of a global define. > > I think this regex should work: > > require_once\s?\((.*?)\); > > I just don't know the magic sed/awk/grep/whatever to do the search and > replace on all my .php files recursively. > > This seems like a useful 'routine' to post up on that page, as I'm sure I'm > not the only one who didn't know this little subtlety (considering PHP > doesn't puke on it either). > > You could try something like this: find . -maxdepth 1 -name "*.php" -type f -exec sed -i 's/find text/replace text/' {} \; Note that the find and replace strings are regular expressions, separated by the / character here, so ()'s will need to be escaped as they have a special meaning in regular expressions. The maxdepth parameter of find can be set to higher than 1 to let the script work recursively on files within directories. Thanks, Ash http://www.ashleysheridan.co.uk