2.32 移动和重命名文件

mv

cp命令复制文件看起来非常简单,但是移动文件呢?在命令全名的英文单词中去掉多余的相似元音,我们就有了mv命令,是move的简写。

很快你将注意到,前面学到的cp命令的大部分选项与mv命令使用的选项类似。这不足为奇,毕竟mv命令实际上执行了一个cp-a操作,在成功复制文件后再移除原有的文件。

用最简单的话来说,mv命令的作用就是将文件系统的文件从一个地方移动到另一个地方。

  1. $ pwd
  2. /home/scott/libby
  3. $ ls
  4. libby_arrowrock.jpg libby_bak.jpg libby.jpg
  5. libby_on_couch.jpg on_floor
  6. $ ls ~/pictures/dogs
  7. libby_on_floor_01.jpg libby_on_floor_03.jpg
  8. libby_on_floor_02.jpg libby_on_floor_04.jpg
  9. $ mv ~/pictures/dogs/libby_on_floor_04.jpg
  10. libby_on_floor_04.jpg
  11. $ ls
  12. libby_arrowrock.jpg libby.jpg
  13. libby_on_floor_04.jpg
  14. libby_bak.jpg libby_on_couch.jpg on_floor
  15. $ ls ~/pictures/dogs
  16. libby_on_floor_01.jpg libby_on_floor_02.jpg
  17. libby_on_floor_03.jpg

和使用cp命令一样,如果你不喜欢重复输入文件名称,也可以使用点号“.”来表示当前目录。

  1. $ pwd
  2. /home/scott/libby
  3. $ ls
  4. arrowrock.jpg libby.jpg on_couch.jpg on_floor
  5. $ ls ~/pictures/dogs
  6. on_floor_01.jpg on_floor_03.jpg
  7. on_floor_02.jpg on_floor_04.jpg
  8. $ mv ~/pictures/dogs/on_floor_04.jpg .
  9. $ ls
  10. arrowrock.jpg on_couch.jpg on_floor_04.jpg
  11. libby.jpg on_floor
  12. $ ls ~/pictures/dogs
  13. on_floor_01.jpg on_floor_02.jpg on_floor_03.jpg

如果你需要将文件移动到另一个目录,并保持文件名相同,则只需要指定目录。目标文件名默认保持不变。

  1. $ pwd
  2. /home/scott/libby
  3. $ ls
  4. arrowrock.jpg on_couch.jpg on_floor_04.jpg
  5. libby.jpg on_floor
  6. $ ls on_floor
  7. on_floor_01.jpg on_floor_02.jpg on_floor_03.jpg
  8. $ mv on_floor_04.jpg on_floor
  9. $ ls
  10. arrowrock.jpg on_couch.jpg on_floor_04.jpg
  11. libby.jpg on_floor
  12. $ ls on_floor
  13. on_floor_01.jpg on_floor_03.jpg
  14. on_floor_02.jpg on_floor_04.jpg

为了直观地表达on_floor实际上是一个目录,在文件要移动到的目录名后面写个“/”符号加以标识,是个很好的主意,如mv libby_on_ floor_04.jpg on_floor/。如果on_floor不是目录,mv命令就不会起作用,这样可以防止你无意间覆盖了其他文件。

说明 cpmv命令使用很多相同的选项,这些选项在每个命令中的运行方式也相同。例如,-v可以在复制和移动文件时显示执行过程,-i在复制和移动文件时交互式地提示是否覆盖已经有的文件。