Renaming a listing in Linux is simple, and there are many methods to go about it. From renaming a single listing to discovering and renaming many, right here’s how you can do it.
Your Information Is Protected
Renaming directories is one thing all of us have to do occasionally.
We’d create a listing and misspell its title, and we wish to put it proper. Typically, the aim of a listing modifications over time or by the lifetime of a venture, and also you wish to alter the title to replicate its new use. Maybe you’ve decompressed an archive file and it’s created a listing tree with the listing names in uppercase and also you’d like them in lowercase.
Regardless of the purpose. renaming a listing doesn’t do something to the information held inside it. It modifications the path to that knowledge, however the information and directories inside your renamed listing aren’t touched.
Don’t rename system directories. Altering the trail to system information and instructions goes to have a detrimental impact on the operating of your laptop, to say the least. If you have to use sudo
to rename a listing—until you actually know what you’re doing—the possibilities are you shouldn’t be renaming it.
Utilizing the mv Command
In probably the most simple circumstances, all we actually want is the mv
command. That is an integral a part of each Linux distribution, so there may be nothing to put in.
The mv
command is over 50 years outdated on the time of writing. It hails from the daybreak of Unix, when brief and cryptic instructions have been in vogue, most likely to cut back the variety of characters that needed to cross alongside gradual serial strains from teletypes and dumb terminals to the precise laptop.
It really stands for “transfer”, and it may be used to maneuver information from listing to listing. If you happen to transfer a file to the identical location that it’s already in and provides it a brand new title, you’ve renamed the file. And we are able to do the identical with directories.
There are two subdirectories on this listing.
ls
To rename a listing we use the mv command. We have to present the present title of the listing and the brand new title.
mv old-work archive-2
If the listing you wish to rename isn’t in your present listing, present the trail in addition to the listing title.
mv ~/htg/old-work ~/htg/archive-2
ls
Utilizing the File Browser
File browsers are capable of rename directories. The keystroke within the GNOME Information utility is F2. Highlighting a listing and tapping the F2 key opens the “Rename Folder” dialog.
Kind within the new title, and click on the inexperienced “Rename” button.
The listing is renamed for you.
It’s so simple as that.
The rename Command
In case your wants are extra difficult than the simple renaming of a listing you may want to make use of the rename
command. This lets you use Perl expressions to rename information and directories. It gives an altogether extra highly effective and versatile technique to rename directories.
We’re going to be speaking in regards to the Perl-based rename
command. There’s one other, older command referred to as rename
which is a part of the Linux core utilities. You’ll most likely want to put in the Perl rename
command we wish to use.
To keep away from title clashes with the prevailing rename
command, the Perl rename
command is known as prename
on Fedora, and perl-rename
on Manjaro. On Ubuntu, the rename
and prename
instructions are each symbolic hyperlinks that resolve to a binary referred to as file-rename
.
So, on Manjaro the command you’ll want to make use of perl-rename
, and on Fedora it’s prename
. On Ubuntu, you need to use rename
or prename
.
To put in Perl rename, on Ubuntu you have to sort:
sudo apt set up rename
On Fedora, the command is:
sudo dnf set up prename
On Manjaro the bundle is known as perl-rename
.
sudo pacman -Sy perl-rename
Be sure you use the suitable command on your distribution if you wish to work by the examples.
First Steps With rename
The rename
command takes Perl common expressions and applies them to a file or listing, or group of information or directories.
In our listing, we’ve a group of different directories.
ls
Their names are a combination of lowercase, uppercase, and combined case. We will convert all of them to lowercase with an appropriate expression.
rename 'y/A-Z/a-z/' *
ls
All of the directories are actually in lowercase, whether or not they have been wholly uppercase beforehand, or contained the odd uppercase letter.
All of the magic is contained within the expression. The expression is wrapped in single quotes “'
“. That is what the complete command means.
- y: This implies seek for any character within the first vary of characters, and substitute it for the corresponding character from the second vary of characters.
- /A-Z/a-z/: The primary vary is all of the letters from “A” to “Z”, and the second vary is all of the characters from “a” to “z.”
- *: The asterisk wildcard means apply this to all directories.
In different phrases, the command reads as “for all directories, swap any uppercase letters for the equal lowercase letter.”
Clearly, you’ll be able to rename a single listing with rename
, though it does smack of overkill. You’ll be faster utilizing mv
.
rename 's/gamma/epsilon-2/' *
ls
The “s” on this expression means substitute. It checks every listing to see if its title is “gamma”. Whether it is, it replaces it with “epsilon-2.” Bear in mind although, that this might even have matched a listing referred to as “gamma-zeta”, for instance, renaming it to “epsilon-2-zeta.”
We will keep away from this by including the beginning of string “^
” and finish of string “$
” metacharacters to the primary clause of the expression.
ls
rename 's/^gamma$/epsilon-2/' *
ls
This leaves the listing “epsilon-2” untouched.
Utilizing rename With Different Instructions
We will use different instructions to find the directories we wish rename
to work on. If we’ve a set of nested directories and we wish to rename any that finish in “-old” so that they finish in “-archive”, we are able to obtain that through the use of discover
and xargs
.
We have to use xargs
as a result of rename
doesn’t settle for piped enter. The xargs
command overcomes that downside by accepting the piped enter and including to the command line of one other command as a command line parameter.
Our command appears to be like like this:
discover . -depth -type d -name "*-old" | xargs -r rename "s/outdated$/archive/"
- .: We inform discover to start out looking out within the present listing. This could possibly be any path, after all.
- -depth: Use a depth-first search. This implies the contents of deeper nested subdirectories are processed earlier than increased ones.
- -type d: Seek for directories, not information.
- -name “*-old”: The search clue. We’re on the lookout for directories with names ending in “-old.”
- |: We’re piping the output from discover into the
xargs
command. - xargs -r: The
-r
(no run if empty) means don’t run the command if there aren’t any matching directories. - rename “s/outdated$/archive/”: The
rename
command to be run.
Our listing tree appears to be like like this earlier than the command.
We run our command:
And we are able to see that the entire matching directories together with the nested ones have been renamed.
Horses for Programs
Renaming a listing doesn’t want something greater than mv
. If you happen to favor GUI functions you need to use your file browser. If you happen to’ve acquired a whole lot of directories to rename, and particularly in the event that they’re scattered all through a listing tree, you’re going to wish the flexibleness of rename
.
RELATED: Learn how to Handle Information from the Linux Terminal: 11 Instructions You Must Know