Linux: rename, rename.ul, prename, perl-rename: what a confusion!
1 Summary of this article.
In this article I report some observations on how to rename documents in GNU/Linux using text commands, clarifying some differences between various distributions.
The rename
command does not, in fact, have unique
behavior in distributions derived from Debian versus those derived from
Fedora and Arch.
I will try to clarify the content of different commands and the different behavior of commands that have the same name.
All steps were personally tried during the writing of the article.
If you find inaccuracies or errors, please let me know.
2 One for all: mv.
To rename a document using the command line in GNU/Linux one
generally uses the mv
command, or move and this
command has a unique behavior in all distributions.
Basically, the mv
command moves the document
from the old name to the new name, and this operation is performed
uniformly across distributions.
The syntax is very simple: mv old-name new-name
.
But it is not the only command for this operation.
There are other commands starting with rename
.
3 The rename command: this is where the problems begin!
In many distributions there is a rename
command
available that extends the functionality of renaming documents using
templates.
The behavior of that command, however, is not unique.
In versions of Ubuntu prior to #22 there was a command called
rename-ul
installed with the util-linux
package. That command was not compatible with regular
expressions.
The current version of the rename
command in Ubuntu and
Debian is, however, compatible with regular expressions and
installs with sudo apt install rename
.
Thus: in Debian, Ubuntu and derived distributions, the
rename
command allows the use of
regular expressions
.
A command with the same name is also present in the installation archives of Fedora and Arch but it has a different behavior as it is not compatible with “regular expressions”.
Basically, the rename
command found in Fedora and Arch
has a behavior similar to the old rename-ul
once
found in Debian and Ubuntu.
In order to have a regular expression compatible command, you need to
install the prename
command in Fedora and
perl-rename
in Arch Linux.
So, to summarize: - In Debian and Ubuntu, installed a few years ago
and updated from time to time, you may still find the
rename-ul
command installed that is not compatible with
regular expressions - The current rename
command in Debian
and Ubuntu is, however, compatible with regular
expressions.
- The rename
command in Fedora and Arch is
not compatible with regular expressions. - The
equivalent regular expression compatible command is prename
for Fedora and perl-rename
for Arch.
4 How does the rename
command behave that is NOT compatible with regular expressions?
The rename
command found in Fedora and Arch, which,
then, is the same at the time named rename-ul
found in
Debian and Ubuntu, allows operations to be performed on multiple
document bases through the use of “templates” but without the use of
regular expressions.
The basic syntactic pattern is as follows:
rename [options] <pattern> <replacement> <file(s)>
For example: to replace the .txt extension with the .bak extension on all text documents, the following formulation is used:
rename .txt .bak *.txt
Therefore rename
is, already, very versatile but, in
Fedora and Arch version, it does not support the power of regular
expressions, i.e., the meta-language of excellence for
operating on text strings.
5 The
regular expressions
compatible commands.
In various distributions there are Perl regular expression
compatible commands variously named: in Debian and
Ubuntu the command is rename
; in Arch
Linux it is perl-rename
; in Fedora it is
prename
.
Installation is very simple for each distribution: - For Debian and
Ubuntu: sudo apt install rename
. - For Fedora:
sudo dnf install prename
. - For Arch:
sudo pacman -S perl-rename
or, for those who use it,
yay -S perl-rename
.
Compatibility with regular expressions is done with
reference to the Linux sed
command.
6 The “sed” command in GNU/Linux.
The sed (stream editor) command in GNU/Linux is used for replacing text strings within documents.
The command operates not on the name of documents but within them.
A typical sed formula is as follows:
$sed 's/old_name/new_name/' file_object
The result is presented in the command line and can, of course, be
redirected to a separate document with the >
operator of
the Linux command line.
The same procedure can be used for document names but the operator
cannot be the sed
command but rather a command expressly
dedicated to editing at the name level and not the content level.
The rename
commands in Debian and Ubuntu,
prename
in Fedora and perl-rename
in Arch use,
precisely, a sed-like structure.
7 Using regular expression compatible commands.
The basic pattern of rename
in Debian and Ubuntu,
prename
in Fedora and perl-rename
in Arch is
as follows:
command-name 's/old_name/new_name/' file(s)
For example, to replace the .txt extension with the .bak extension on all text documents, the following regular expression is used (depending on the various distributions):
- rename 's/\.txt$/.bak/' *.txt
- prename 's/\.txt$/.bak/' *.txt
- perl-rename 's/\.txt$/.bak/' *.txt
I hope I have cleared up this potential confusion between commands for renaming documents in different GNU/Linux distributions.
Thank you for your attention.
Originally posted at Sito Web di Franco Pasut
Comments
Post a Comment