1、命令简介
mv:用于移动文件或重命名文件的命令。移动(重命名)一个或多个文件和目录到给定位置(如果没有定义location,则重命名当前位置上的文件)。
2、命令语法
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
3、命令描述
mv
命令是"move"(移动)的缩写。此命令支持移动或重命名文件、一组文件或目录。它将源文件或目录重命名为目标文件或目录,或将源文件(文件)移动到目标目录。如果两个文件名位于同一目录中,这只是文件重命名;否则,文件内容将被复制到新位置,然后删除旧文件。默认情况下,mv 命令会在不发出警告的情况下覆盖文件。如果目标文件已经存在,它的数据将被覆盖。
要使用 mv
命令,用户必须在文件将要移动的目录上具有写权限。这是因为 mv 更改了移动涉及的两个目录(即源和目标)的内容。当在位于同一目录中的文件上使用 mv 命令时,文件的时间戳不会更新。
如果源和目标参数都是文件,则此命令将第一个文件复制到第二个文件,然后删除第一个文件。如果目标文件不存在,mv 命令会创建它并删除源文件。
如果源包含多个文件或目录作为参数,则目标参数应为目录。
如果源和目标参数都是目录,则它将第一个目录递归地复制到第二个目录,然后删除第一个目录。
4、命令选项
选项 | 描述 |
--backup[=CONTROL] | 创建每个已存在的目标文件的备份 |
-b | 类似于 --backup 但不接受参数 |
-f , --force | 在覆盖之前不进行提示 |
-i , --interactive | 覆盖之前进行提示 |
-n , --no-clobber | 不覆盖已存在的文件 |
--strip-trailing-slashes | 从每个源参数中删除任何尾随斜杠 |
-S , --suffix=SUFFIX | 覆盖默认的备份后缀 |
-t , --target-directory=DIRECTORY | 将所有源参数移动到目录DIRECTORY |
-T , --no-target-directory | 将DEST视为普通文件 |
-u , --update | 仅在源文件较新或目标文件丢失时移动 |
-v , --verbose | 解释正在执行的操作 |
-Z , --context | 将目标文件的SELinux安全上下文设置为默认类型 |
--help | 显示帮助信息并退出 |
--version | 输出版本信息并退出 |
如果指定了多个选项 -i
, -f,
-n
,只有最后一个选项会生效。
备份后缀默认为 '~',除非使用 --suffix
或 SIMPLE_BACKUP_SUFFIX 进行设置。版本控制方法可以通过 --backup
选项或通过 VERSION_CONTROL 环境变量来选择。以下是可能的取值:
值 | 描述 |
none, off | 从不创建备份(即使使用 --backup) |
numbered, t | 创建带编号的备份 |
existing, nil | 如果已存在带编号的备份,则使用带编号备份,否则使用简单备份 |
simple, never | 总是创建简单备份 |
5、使用示例
1)重命名当前目录中的文件:
$ mv book_list.txt movie_list.txt
2)将文件移动到 'archive' 目录:
$ mv viewers_list.txt archive/
3)将文件移动到 'archive' 目录并重命名:
$ mv viewers_list.txt archive/users_list.txt
4)一次性移动多个文件:
$ mv current_news.txt headlines.txt cover_story.txt current_news/
5)使用通配符一次性移动多个文件:
$ mv *.txt news_portal/
6)移动一个目录及其内容:
$ mv current_news/ news_portal/
7)使用交互模式移动文件
$ mv -i viewers_list.txt archive/users_list.txt mv: overwrite 'archive/users_list.txt'? y $ mv --interactive viewers_list.txt archive/users_list.txt mv: overwrite 'archive/users_list.txt'? y
8)无需提示即可移动文件:
$ mv -f viewers_list.txt archive/users_list.txt $ mv --force viewers_list.txt archive/users_list.txt
9)仅在目标文件不存在时才移动:
$ mv -n headlines.txt current_news/ $ mv --no-clobber headlines.txt current_news/
10)如果目标文件已存在,则创建备份:
$ mv -b viewers_list.txt users_list.txt $ mv --backup viewers_list.txt users_list.txt $ mv --backup=numbered viewers_list.txt users_list.txt
11)创建具有特定后缀的备份:
$ mv -S .bak viewers_list.txt users_list.txt $ mv --suffix=.bak viewers_list.txt users_list.txt
12)仅当源文件新于目标文件时才移动:
$ mv -u headlines.txt current_news/ $ mv --update headlines.txt current_news/
13)将文件移动到指定目录:
$ mv -t news_portal/ current_news/ archive/ $ mv --target-directory=news_portal current_news/ archive/