Man Linux: Main Page and Category List

NAME

       msrp - search and replace file contents and metadata recursively.

SYNOPSIS

       msrp searchpat repstr [-cdfipqsw] [--svn | --hg] [file1 | dir1/] [file2
       | dir2/]...

DESCRIPTION

       msrp reads in one or more file or directory  arguments  and  applies  a
       regular-expression   based  global  transformation.   It  searches  for
       searchpat as a Perl 5 compatible  regular  expression  and  substitutes
       repstr  for  it for all listed arguments that follow.  msrp applies the
       substitution to both the contents of files as  well  as  the  filenames
       themselves.   If a filename is changed by a substitution, then the file
       is renamed to reflect the new value.  This type of renaming  is  useful
       when using filenames that are also used in program source code text and
       both must be kept consistent together.   If  a  directory  argument  is
       given,  that directory is recursively traversed unless the -s option is
       given.  Directories  can  also  be  renamed  and  all  three  modes  of
       operation  are  enabled  by  default.   File  contents, file names, and
       directory names are all transformed by  the  given  regular  expression
       substitution.  Note that subdirectories starting with . are not entered
       recursively unless the --dot-paths option is specified.

       If a numbered back-substitution group is wanted, simply use a backslash
       followed  by  a  decimal  digit  to  refer  to  a captured group in the
       replacement string.   Capture  group  0  represents  the  entire  match
       string.

       If  a  file is unchanged by a given regular expression then it will not
       have its modification time  updated  by  msrp.   Only  files  that  are
       actually  changed  are  touched.   If a file would be changed or a file
       modification would overwrite a preexisting file, then an  .orig.1  file
       will be created.  The following options can customize behavior:

       -c     disable file contents transformation

       -d     disable directory renaming transformation

       -f     disable filename renaming transformation

       -i     perform case-insensitive matching

       -p     preserve  mode,  so  that  .orig  files  are created (default is
              overwrite mode)

       -q     quiet mode, with no extra status messages

       -s     do not recursively enter subdirectories

       -w     enable  word-boundary  constraint.  This   means   the   matched
              expression  must  begin and end with a word boundary, as in perl
              \b regexp notation.

       --hg or --mercurial
              enable Mercurial renaming.

       --svn or --subversion
              enable Subversion renaming.

       EXAMPLES
              Rename all files in the current directory  recursively  searched
              that  end  with  the  extension  .html  and  rename them to .htm
              without touching file contents or directories:

       msrp -c -d '(.*)html$' '\1htm' .

       Copy olddebian/ dir to debian/ while changing oldpkgname to newname in
              files, directories, and filenames:

       cp -rv olddebian/ debian && msrp oldpkgname newname debian

       Normalize extension case of .c files so .C becomes .c:

       msrp -c -d -i '(.*)\.c$' '\1.c' .

       Rename vector to zector in Subversion:

       msrp --svn vector zector .

       ENVIRONMENT
              No environment variables.

BUGS

       Please report bugs to the Debian BTS.

AUTHOR

       Rudi Cilibrasi <cilibrar@cilibrar.com>