2.33 重命名文件和文件夹
mv
很快将看到,除了移动文件以外,mv
还能做更多的事情,这些事情可能看起来有点违背直觉,但是在考虑片刻之后又觉得很有道理。
现在,我们要介绍mv
命令另一个很酷的功能。虽然mv
命令是用来移动文件的(毕竟,正如其名字所示),但是它也可以用来重命名文件。如果要移动文件,就必须为它指定一个目标名称。没有规则要求目标名称必须与源文件名称相同,所以shell用户从一开始就依靠mv
命令来重命名文件和目录。
$ pwd
/home/scott/libby/by_pool
$ ls -F
libby_by_pool_02.jpg liebermans/
$ mv liebermans/ lieberman_pool/
$ ls -F
libby_by_pool_02.jpg lieberman_pool/
使用cp
命令移动目录时,为了复制真实的目录结构,必须指定-R
(或--recursive
)选项。从前一个例子可以看到,mv
命令并非如此,它可以顺利地移动或重命名目录,根本不需要指定任何额外选项,与cp
命令相比,这是非常好的改变。
警告 对于
mv
命令,有个非常重要但又很容易被忽略的细节需要知道。如果你在移动一个指向目录的软链接,就需要特别注意输入的内容。假设在你的home
目录中有一个名为dogs
的软链接指向/home/scott/pictures/dogs
,而你想将这个链接移动到/home/scott/libby
子目录中。以下这个命令只移动软链接:
$ mv dogs ~/libby
而以下这条命令移动的是软链接所指向的目录:
$ mv dogs/ ~/libby
区别在什么地方呢?就是在软链接的末端加了一个简单的斜杠(“/
”)。没有斜杠的话,移动的是软链接本身,而且只是这个链接;有了斜杠的话,移动的将是软链接指定的目录,而不是软链接本身。一定要小心啊!