.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 does not support file names containing newlines and will exit with an error if provided with such file names. .Pp .Nm name uses hard-coded array sizes: at most, one hundred 255-character file names can be processed. While overflows are correctly handled, they are silently ignored. When processing very many or very long file names, the use of the .Fl x flag is not recommended. .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 multiple bulk renames from the same shell process. Note that sub-shells retain the process id of their parent.