.Dd $Mdocdate$ .Dt RE 1 .Os .Sh NAME .Nm re .Nd bulk rename with UNIX philosophy .Sh SYNOPSIS .Nm re .Ar file .Op Ar ... .Nm name .Op Fl x . .Sh DESCRIPTION .Pp .Nm re and .Nm name are used in conjunction in order to bulk rename files. .Pp .Nm re writes a number of file names, separated by newlines, to a temporary file and on standard out. .Pp .Nm name reads the original file names from the temporary file and the new file names from standard in. It prints the corresponding .Xr mv 1 commands on standard out. If given the .Fl x flag, it executes them as well. .Pp The idiomatic way to use .Nm re and .Nm name is to connect them with a pipe, with arbitrary programs in-between. . .Sh EXAMPLES .Pp The following invocation changes the file extension of all mp3 files: .Bd -literal -offset indent $ re *.mp3 | sed 's/mp3$/m4a/' | name -x .Ed .Pp The following invocation uses .Xr ep 1 to manually edit the file names in .Xr vi 1 : .Bd -literal -offset indent $ re * | ep | name .Ed .Pp .Xr ep 1 is available for download at .Lk http://git.ankarstrom.se/xutil/ . . .Sh AUTHORS .Pp .Nm re and .Nm name are written by John Ankarström .Aq Mt "john (at) ankarstrom.se" . . .Sh BUGS .Pp .Nm re and .Nm name do not support file names containing newlines and will exit if provided with such file names. .Pp The temporary file is placed at .Pa /var/tmp/re.$PPID , where $PPID is the process id of the parent shell. This means that one cannot simultaneously perform mulitple bulk renames from the same shell process. Note that sub-shells retain the process id of their parent.