14
Feb/09
1

Linux: find a string recursively within files

Well… there are several ways of doing this in Linux and Unix:

find /<path> 'filename.extension> (wildcard allowed)
find /<path> *.* | xargs grep <string>
find . -type f -exec grep "<string>" {} \; -print
grep -r "<string>" /<path>/<filename>

You can also add a ‘>> <filename>’ (no quotes) to the end to write the output to a file so you can take a look at it later.

To recursively find and replace a string within files:

find . -type f | xargs perl -pi~ -e 's/<current string>/<new string>/g;'
sed -i '<current string>/from/to/<new string>' `find . -name \*.ext`

Put `find . -name \*.ext` in a double quote and it should work for filenames with space as well.

If you want to find and delete files or directories recursively, look here.

Share this article
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Twitter
  • LinkedIn

Related posts:

  1. Linux: Find and delete files/directories recursively in Linux
  2. Linux: vsftpd and symbolic links
  3. Linux: User management
  4. Linux: df: cannot read table of mounted file systems
  5. Linux: Copy files between Linux Servers with scp

Filed under: Linux