0


Linux 常用命令 - mv 【移动或重命名文件】

简介

  1. mv

命令源于 “move”,意为“移动”,主要用于移动文件或重命名文件。这个命令可以改变文件在文件系统中的位置或名称。区别于

  1. cp

指令,

  1. cp

后的文件个数是增加的,所以会额外占用与原文件相同大小的磁盘空间,

  1. mv

则不会。在同一个目录内对文件进行移动的操作,实际上可以理解为重命名操作。

使用方式

  1. mv[选项]... [-T] 源文件 目标文件
  2. mv[选项]... 源文件... 目录
  3. mv[选项]... -t 目录 源文件...

常用选项

  • --backup[=CONTROL]:如果目标位置已存在同名文件,则对该文件进行备份。CONTROL 是可选的参数,其指明了具体的备份策略,下文会详细描述。
  • -b:类似于 --backup 但不需要参数。
  • -f, --force:强制移动,如果存在覆盖行为不要进行提示。
  • -i, --interactive:如果目标文件已存在,则在覆盖前进行交互性提示,让用户选择是否要覆盖。
  • -n, --no-clobber:不对已存在的文件进行覆盖。
  • --strip-trailing-slashes:去除命令行中每个源文件参数末尾的斜杠/
  • -S, --suffix=SUFFIX:指定备份文件的后缀为 SUFFIX
  • -t, --target-directory=DIRECTORY:将命令行中列出的所有源文件移动到指定目录中。
  • -T, --no-target-directory:将目标视为一个普通文件,而非目录。
  • -u, --update:仅当源文件比目标文件更新或目标文件不存在时才进行移动。
  • -v, --verbose:显示详细的处理过程。
  • -Z, --context:将目标文件的安全上下文重置为默认类型。
  • --help:显示帮助信息。
  • --version:显示版本信息。

CONTROL

默认的备份后缀为

  1. ~

,可以通过

  1. --suffix

选项或

  1. SIMPLE_BACKUP_SUFFIX

环境变量来修改。版本控制策略则可以通过

  1. --backup

选项或者

  1. VERSION_CONTROL

这个环境变量来修改,其可接受的值如下:

  • none,off:从不创建备份文件(即使指定了 --backup 选项)。
  • numbered, t:创建编号型的备份文件。
  • existing, nil:如果已存在编号文件,则创建新的编号备份,如果没有则创建简单备份。
  • simple, never:始终创建简单型备份文件。

参考示例

1. 移动文件到指定目录

  1. mv new.txt ./sub_dir/

使用

  1. mv

  1. new.txt

移动到当前目录下的

  1. sub_dir

目录下:

  1. jay@jaylinuxlenovo:~/test/cmd_test_dir$ ls-Rl
  2. .:
  3. total 8
  4. -rw-rw-r-- 1 jay jay 121 Jul 2817:26 new.txt
  5. drwxrwxr-x 2 jay jay 4096 Aug 1211:25 sub_dir
  6. ./sub_dir:
  7. total 0
  8. jay@jaylinuxlenovo:~/test/cmd_test_dir$ mv new.txt ./sub_dir/
  9. jay@jaylinuxlenovo:~/test/cmd_test_dir$ ls-Rl
  10. .:
  11. total 4
  12. drwxrwxr-x 2 jay jay 4096 Aug 1212:42 sub_dir
  13. ./sub_dir:
  14. total 4
  15. -rw-rw-r-- 1 jay jay 121 Jul 2817:26 new.txt

使用

  1. ls

命令可以观察到移动之前

  1. new.txt

在当前目录下,

  1. sub_dir

目录为空,移动之后

  1. new.txt

被成功转移到

  1. sub_dir

中。

2. 移动时若存在覆盖则创建备份

  1. mv-b new.txt ./sub_dir/new.txt

使用

  1. -b

选项可以在目标文件存在的情况下自动创建一个备份:

  1. jay@jaylinuxlenovo:~/test/cmd_test_dir$ mv-b new.txt ./sub_dir/new.txt
  2. jay@jaylinuxlenovo:~/test/cmd_test_dir$ ls sub_dir/
  3. new.txt new.txt~

移动后使用

  1. ls

指令可以看到多了一个

  1. ~

结尾的备份文件。

3. 强制覆盖目标不提示

  1. mv-f new.txt ./sub_dir/new.txt

使用

  1. -f

选项可以在源文件存在的情况下强制进行覆盖而不进行提示:

  1. jay@jaylinuxlenovo:~/test/cmd_test_dir$ mv-f new.txt ./sub_dir/new.txt
  2. jay@jaylinuxlenovo:~/test/cmd_test_dir$ ls ./sub_dir/
  3. new.txt

可以看到

  1. mv -f

指令并没有提示任何信息,

  1. sub_dir

下的

  1. new.txt

实际已被覆盖。

4. 交互式操作,覆盖前询问

  1. mv-i new.txt ./sub_dir/new.txt

由于

  1. sub_dir

下已经存在一个

  1. new.txt

,所以此时使用

  1. mv

时会产生覆盖,同时由于指定了

  1. -i

选项,系统会在覆盖前进行交互式询问:

  1. jay@jaylinuxlenovo:~/test/cmd_test_dir$ mv-i new.txt ./sub_dir/new.txt
  2. mv: overwrite './sub_dir/new.txt'? y

可以看到

  1. mv

在覆盖前给出了提示,输入

  1. y

并回车后进行了移动以及覆盖。

5. 显示详细的处理过程

  1. mv-v new.txt ./new-rename.txt

使用

  1. -v

选项可以在指令执行时显示详细的执行信息:

  1. jay@jaylinuxlenovo:~/test/cmd_test_dir$ mv-v new.txt ./new-rename.txt
  2. renamed 'new.txt' ->'./new-rename.txt'

注意事项

  • 使用 mv 时,若目标文件已存在,除非使用 -i,否则会直接覆盖,这可能导致数据丢失。 在移动目录时,用户需要具备相应的权限。
  • 使用 -f 参数可以强制覆盖目标文件,但不会进行提示,所以需谨慎使用以避免不必要的数据丢失。
  • 若源文件和目标文件在不同的文件系统上,mv 实际上是复制后删除原文件的过程。
  • 在脚本中使用 mv 时,建议结合 -n-i 参数以防止意外覆盖文件。
  • 如果同时指定了 -i-f-n,那么只有最后一个选项会起作用。
标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/Cris_Jay/article/details/141132760
版权归原作者 WKJay_ 所有, 如有侵权,请联系我们删除。

“Linux 常用命令 - mv 【移动或重命名文件】”的评论:

还没有评论