如何通过命令行重命名目录?

N.N*_*.N. 685 command-line rename

我有目录/home/user/oldname,我想将它重命名为/home/user/newname. 我怎样才能在终端中做到这一点?

Raf*_*lak 888

mv /home/user/oldname /home/user/newname
Run Code Online (Sandbox Code Playgroud)

  • 如果新名称已经是现有目录,这将不起作用。相反,它会将旧目录移动到新目录中。 (87认同)
  • @cxrodgers: [pass `--no-target-directory` (`-T`)](http://askubuntu.com/a/763915/3712),以避免将 `newname` 视为目标目录。 (11认同)
  • 如果目录名称与大写相同,您将得到“没有这样的文件或目录”。为了避免这种情况,请执行类似`mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder`。 (10认同)
  • 相关 http://www.brighthub.com/computing/linux/articles/20667.aspx (4认同)

小智 142

mv 可以做两份工作。

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

要重命名文件或目录,请在终端中键入:

mv old_name new_name 
Run Code Online (Sandbox Code Playgroud)

新旧名称之间有空格。

要移动文件或目录,请在终端中输入。

mv file_name ~/Desktop 
Run Code Online (Sandbox Code Playgroud)

它会将文件移动到桌面。

如果是一个目录,您应该-R在目录名称之前添加:

mv -R directory_name ~/Desktop
Run Code Online (Sandbox Code Playgroud)

  • Ubuntu 上的 `mv` 来自 GNU coreutils。AFAICT 它没有 `-R` 选项,在移动目录时也不需要。 (8认同)

bma*_*pin 48

mv -T /home/user/oldname /home/user/newname
Run Code Online (Sandbox Code Playgroud)

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

如果你这样做:

mv /home/user/oldname /home/user/newname
Run Code Online (Sandbox Code Playgroud)

将发生以下两种情况之一:

  • 如果/home/user/newname不存在,它将重命名/home/user/oldname/home/user/newname
  • 如果/home/user/newname存在,它将/home/user/oldname进入/home/user/newname,即/home/user/newname/oldname

来源:如何决定 mv 移动到目录而不是替换目录?


小智 10

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

mv Directory ./NewNameDirectory
Run Code Online (Sandbox Code Playgroud)


Avi*_*Raj 5

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

gvfs-move /home/user/oldname /home/user/newname
Run Code Online (Sandbox Code Playgroud)


the*_*les 5

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

gvfs-rename /home/boo /home/boo-the-dog 
Run Code Online (Sandbox Code Playgroud)

不会起作用,但是

cd /home 
gvfs-rename boo boo-the-dog 
Run Code Online (Sandbox Code Playgroud)

将工作。不像 mv -T 那么有用,但我在 man 中读到它是用于网络操作的。