我有目录/home/user/oldname,我想将其重命名为/home/user/newname。如何在终端中执行此操作?

评论

另请参阅:如何移动目录

始终使用mv或重命名。

使用mv,不要在结尾使用/。因为您的内容将放入其中。

#1 楼

mv /home/user/oldname /home/user/newname


评论


相关的Brighthub.com/computing/linux/articles/20667.aspx

– N.N.
2011年8月8日在17:23

很酷的文章。这就是重点。

–拉斐尔·西拉克(RafałCieślak)
2011年8月9日在9:02

如果新名称已经是现有目录,则将无法使用。而是将旧目录移到新目录中。

–cxro​​dgers
2014年4月17日下午4:56

如果目录名与大写字母相同,则将显示“无此文件或目录”。为了避免这种情况,请执行以下命令:mv / home / user / folder / home / user / temp; mv / home / user / temp / / home / user / folder。

–DutGRIFF
2014年12月5日在16:30

@cxrodgers:传递--no-target-directory(-T),以避免将newname视为目标目录。

– jfs
16-12-7在4:52



#2 楼

mv可以完成两项工作。


它可以移动文件或目录
它可以重命名文件或目录

仅重命名文件或目录类型在Terminal中:

mv old_name new_name 


在新名称和旧名称之间留有空格。

要移动文件或目录,请在Terminal中键入此内容。 br />
mv file_name ~/Desktop 


它将文件移动到桌面。

如果是目录,则应在目录名称前添加-R

mv -R directory_name ~/Desktop


评论


Ubuntu上的mv来自GNU coreutils。 AFAICT没有-R选项,在移动目录时也没有必要。

–arielf
2015年9月9日在7:46



-r甚至不起作用

–user1735921
16-09-26在6:19

正确的选项是-T。有关其行为,请参见@bmaupin的答案。

–计时
17 Mar 23 '17 at 10:09



#3 楼

mv -T /home/user/oldname /home/user/newname


如果目标不存在或目标存在但它为空,它将重命名目录。否则,它将给您一个错误。

如果您执行此操作,则代替:

如果/home/user/newname不存在,则将/home/user/oldname重命名为/home/user/newname

如果/home/user/newname存在,它将/home/user/oldname移入/home/user/newname,即/home/user/newname/oldname


来源:如何确定mv移入目录而不是替换目录?

评论


如果要在不区分大小写的文件系统中大写目录名(可能在MacOS上),则不起作用。 mv -T $ PWD / analisys $ PWD / Analisys返回mv:'/ Users / sixtykeys / Projects / murphy / tmp / analisys'和'/ Users / sixtykeys / Projects / murphy / tmp / Analisys'是同一文件。我通过使用中间名称(即analisys_)来解决此问题。

–protoboolean
19年2月13日在13:12

由于文件系统的限制,该命令可能无法成功执行,但是从另一个角度来看,该命令可以成功地解释您的意图(重命名目录,而不移动目录):)

– bmaupin
19年2月13日在13:47

你有尝试过吗?

– Mahmoud S. Marwad
19年7月21日在14:12

#4 楼

如果要重命名文件系统中的目录(例如,您在主目录中,并且想重命名也在主目录中的目录):

mv Directory ./NewNameDirectory


#5 楼

gvfs-move命令还将重命名文件和目录。

gvfs-move /home/user/oldname /home/user/newname


#6 楼

gvfs-rename也将重命名目录。如果具有新名称的目录已经存在,则会出现错误。唯一的限制是您不能使用带有文件夹名称的路径。因此,

gvfs-rename /home/boo /home/boo-the-dog 


不起作用,但

cd /home 
gvfs-rename boo boo-the-dog 


将起作用。不如mv -T有用,但我读到那个人说它是用于网络操作的。