I have got the directory /home/user/oldname
and I want to rename it to /home/user/newname
. How can I do this in a terminal?
7 Answers
mv /home/user/oldname /home/user/newname
-
4
-
-
102This will not work if the new name is already an existing directory. Instead, it will move the old directory inside the new one. Apr 17, 2014 at 4:56
-
10If the directory name is the same with capitalization you will get
No such file or directory
. To avoid this do something likemv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder
.– DutGRIFFDec 5, 2014 at 16:30 -
14@cxrodgers: pass
--no-target-directory
(-T
), to avoid treatingnewname
as a target directory.– jfsDec 7, 2016 at 4:52
mv
can do two jobs.
- It can move files or directories
- It can rename files or directories
To just rename a file or directory type this in Terminal:
mv old_name new_name
with space between the old and new names.
To move a file or directory type this in Terminal.
mv file_name ~/Desktop
it will move the file to the desktop.
mv -T /home/user/oldname /home/user/newname
That will rename the directory if the destination doesn't exist or if it exists but it's empty. Otherwise it will give you an error.
If you do this instead:
mv /home/user/oldname /home/user/newname
One of two things will happen:
- If
/home/user/newname
doesn't exist, it will rename/home/user/oldname
to/home/user/newname
- If
/home/user/newname
exists, it will move/home/user/oldname
into/home/user/newname
, i.e./home/user/newname/oldname
Source: How to decide that mv moves into a directory rather than replacing directory?
-
Doesn't work if you want to capitalize the directory name in a case-insensitive filesystem (likely on MacOS).
mv -T $PWD/analisys $PWD/Analisys
returnsmv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file
. I worked around this by using an intermediate name (i.e.analisys_
).– acorelloFeb 13, 2019 at 13:12 -
The command may not have been successful due to the limitations of the filesystem, but from another perspective it was successful in interpreting your intentions (renaming a directory, not moving it) :)– bmaupinFeb 13, 2019 at 13:47
-
If you want to rename a directory at your level in the file system (e.g., you are at your home directory and want to rename a directory that is also in your home directory):
mv Directory ./NewNameDirectory
This gvfs-move
command will also rename files and directories.
gvfs-move /home/user/oldname /home/user/newname
gvfs-rename will rename directories as well. It will give an error if a directory with the new name already exists. The only limitation is that you can't use a path with the folder name. So
gvfs-rename /home/boo /home/boo-the-dog
will not work, but
cd /home
gvfs-rename boo boo-the-dog
will work. Not as useful as mv -T but I read in the man that it was meant for network operations.
My preferred method is using: vidir because I love vi
Install moreutils
sudo apt update; sudo apt install moreutils
Call command vidir in your home-directory
vidir ~
Now search for the directory to change, using slash / e.g. /oldname make the changes, then press = ESC type :wq
Done!
mv
orrename
.mv
and don't use/
in end. Because your content will go inside it.