Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PMV(1)		      User Contributed Perl Documentation		PMV(1)

NAME
       pmv - rename files according to perl code

SYNOPSIS
       pmv [-vqdmMrh] [-b startcode] [-e endcode] [--] 'perl code' _files..._

DESCRIPTION
       pmv allows you to manipulate filenames based on arbitrary perl code.
       Think of	it like	perl -pe but operating on the filename instead of the
       file contents. It is useful for renaming	large numbers of files
       according to arbitrary criteria.

       In the code you write, $_ is set	to the current filename, and you
       should change $_	to what	you want the new filename to be.  This enables
       you to write quick oneliners like:

	       pmv 's/$/.bak/;'	*

       If you want more	control, there are three variables defined:

       $file
	   Same	as $_, the filename passed in on the command line.

       $path
	   The full pathname, without the filename.

       $name
	   The filename, without any path components.

       You can alter any of these variables to get the same effect as altering
       $_. Which to use	is determined as follows:

       1:  If $file has	been altered, that is used.

       2:  If $path or $name has been altered, they are	joined together	then
	   used.

       3:  Otherwise, $_ is used.

       The file	pmv-examples.sh	contains useful	example	bourne shell functions
       that use	pmv. This is available in the source distribution, and will
       probably	be installed under /usr/share/doc/mp3-archive-tools/.

       This file can be	sourced	by (using source or .) or included in one of
       your startup files (eg /etc/profile or $HOME/.bash_profile for bash(1)
       users.

OPTIONS
       -v  Verbose.

       -q  Quiet (no output). This is the default.

       -d  Dry run. Shows how it would rename files without actually doing it.

       -b startcode
	   Specifies perl code to run once before processing files. Useful for
	   useing modules and doing one-time initialisation.

       -e endcode
	   Specifies perl code to run once after processing files. Useful for
	   summarising data gathered from filenames.

       -m  If the pathname has been altered, create any	necessary directories.

       -r  If a	file is	moved out of a directory, remove any empty
	   directories.

       -M  Same	as -m -r.

       -h  Show	a brief	usage summary.

       --  End of options.

AVAILABLE FUNCTIONS
       If you have sourced pmv-examples.sh (see	above>,	the following
       functions are available:

       pmv-stdswap
	   Swaps round fields in filenames delimited by	" - ".

       pmv-space2_
	   converts all	spaces in filename to underscores.

       pmv-_2space
	   Converts all	underscores in filename	to spaces.

       pmv-fixcaps
	   Crude attempt at capitalising filenames.

       pmv-fixcase
	   Much	better attempt at capitalising filenames. This requires	the
	   Text::Autoformat module from	CPAN (www.cpan.org).

       pmv-number
	   Numbers filenames sequentially.

       pmv-deepen
	   Converts directoriess from "artist -	album" to "artist/album"

       pmv-flatten
	   Converts directoriess from "artist/album" to	"artist	- album"

       pmv-datestamp
	   Insert a datestamp in the form YYYYMMDD at the start	of the
	   filename. See below for more	details.

EXAMPLES
       Convert all whitespace in all mp3 filenames to underscores
	    pmv	's/\s/_/g;' *.mp3

       Convert the spelling of Color to	Colour in all filenames
	    pmv	's/Color/Colour/gi;' *

       Swap round fields in mp3	filenames
	    pmv	'$name=~s/(.*) - (.*) -	(.*) - (.*)(\..*)/$3 - $1 - $2 - $4$5/;' *.mp3

	   This	would convert eg:

	    Primal Scream - Screamadelica - 04 - Higher	Than The Sun.mp3

	   to:

	    04 - Primal	Scream - Screamadelica - Higher	Than The Sun.mp3

       Crudely capitalise every	word in	all filenames
	    pmv	 '$name=join(" ",map({ucfirst(lc($_));}	split(/\s+/,$name)));' *

	   See pmv-fixcase in pmv-examples.sh for a better way to capitalise
	   filenames.

       Add a datestamp to the start of all filenames
	    pmv	-b '$d=`date +%Y%d%m`;chomp($d);' '$name = "$d.$name";'	*

	   This	adds a datestamp in the	form YYYYMMDD (eg 20031214) to the
	   start of a filename.	Files with datestamps in this form will	sort
	   in date order, which	is useful for (e.g.) logfiles.

	   The -b code to get the date is run only once, before	the files are
	   processed.

	   If you wanted to make this into a shell function, callable by
	   typing "pmv-datestamp files", you would insert the following	into
	   your	startup	files:

	    function pmv-datestamp
	    {
		pmv -b '$d=`date +%Y%d%m`;chomp($d);' '$name = "$d.$name";' "$@"
	    }

BUGS
       Rather similar (I recently discovered) to rename(1), which ships	with
       perl. However, pmv provides several features that rename	does not have,
       and the pmv- shell functions in pmv-examples.sh are useful, so I
       decided to add it to the	mp3-archive-tools(1) package anyway.

SEE ALSO
       perl(1),	mp3-archive-tools(1), mp3lint(1)

AUTHOR
       Ian Beckwith <ianb@nessie.mcc.ac.uk>

AVAILABILITY
       pmv is part of the mp3-archive-tools package.

       The latest version can be found at:

       http://nessie.mcc.ac.uk/~ianb/projects/mp3-archive-tools/

COPYRIGHT
       Copyright 2003 Ian Beckwith <ianb@nessie.mcc.ac.uk>

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published by the
       Free Software Foundation; either	version	2 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it will be useful, but
       WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A	PARTICULAR PURPOSE. See	the GNU
       General Public License for more details.

       You should have received	a copy of the GNU General Public License along
       with this program; if not, write	to the Free Software Foundation, Inc.,
       675 Mass	Ave, Cambridge,	MA 02139, USA.

perl v5.24.1			  2003-12-12				PMV(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | AVAILABLE FUNCTIONS | EXAMPLES | BUGS | SEE ALSO | AUTHOR | AVAILABILITY | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pmv&sektion=1&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help