文章目录
前言
在linux文件管理当中,有这样一个命令即可以做到移动文件到其他目录,也可以用来重命名文件的名称,它就是mv命令;在运维中是一个高频使用的命令,熟悉的运用对工作中也起到不少的帮助。
一、mv命令介绍
mv命令来自于英文单词move的缩写,其功能与英文含义相同,用于对文件进行剪切和重命名。若在同一个目录下对文件进行剪切的操作,这既是重命名的操作。
二、命令语法及参数
1)用help进行查看帮助命令
语法: mv 【选项】源文件 目标文件
[root@localhost ~]# mv --help
用法:mv [选项]... [-T] 源文件 目标文件
或:mv [选项]... 源文件... 目录
或:mv [选项]... -t 目录 源文件...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
--strip-trailing-slashes 去掉每个源文件参数尾部的斜线
-S, --suffix=SUFFIX 替换常用的备份文件后缀
-t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-u, --update move only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-Z, --context set SELinux security context of destination
file to default type
--help 显示此帮助信息并退出
--version 显示版本信息并退出
2)常用参数
-i | 若存在同名文件,则向用户询问是否覆盖 |
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
三、参考实例
1)"mv=mv -i"mv命令移动文件若碰到同名文件,会提问用户是否要覆盖。
[root@localhost data]# alias -p | grep mv
alias mv='mv -i'
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:37 b.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 c.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 d.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 e.txt
drwxr-xr-x. 2 root root 6 2月 8 16:40 test12
[root@localhost data]# touch test12/{a..d}.txt
[root@localhost data]# mv c.txt test12/
mv:是否覆盖"test12/c.txt"? y
[root@localhost data]#
2) 可以看到加了-f参数后,覆盖同名的文件,没有任何提示。
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:37 b.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 d.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 e.txt
drwxr-xr-x. 2 root root 58 2月 8 16:50 test12
[root@localhost data]# mv -f b.txt test12/b.txt
3)在生产过程中不建议加-f参数,可以加-b参数,同名的文件覆盖前,会自主创建一个备份文件;可以看到的是移动到test目录中有同名文件时,test目录下的文件的名称改动了d.txt~。
用--backup和-b参数是一样效果的。
[root@localhost data]# mv -b d.txt test12/
mv:是否覆盖"test12/d.txt"? y
[root@localhost data]# ll test12/
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:50 a.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 b.txt
-rw-r--r--. 1 root root 0 2月 8 16:50 c.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 d.txt
-rw-r--r--. 1 root root 0 2月 8 16:50 d.txt~
[root@localhost data]# touch a.txt
[root@localhost data]# mv a.txt test12/ --backup
mv:是否覆盖"test12/a.txt"? y
[root@localhost data]# ll test12/
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:58 a.txt
-rw-r--r--. 1 root root 0 2月 8 16:50 a.txt~
4)使用-u参数时,除非源文件比目标文件要新,或者目标文件没有相同的,才会移动。
可以看到的是先查看data目录下的e.txt创建时间,使用-u参数移动到目标test目录下时,再次查看源文件还存在data目录;可以看出,源文件比目标文件创建时间早,是不会移动成功的。
[root@localhost data]# stat e.txt
文件:"e.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:67259263 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-02-08 16:37:52.870740564 +0800
最近更改:2023-02-08 16:37:52.870740564 +0800
最近改动:2023-02-08 16:38:20.823723902 +0800
创建时间:-
[root@localhost data]# touch test12/e.txt
[root@localhost data]# mv -u e.txt test12/
[root@localhost data]# stat e.txt
文件:"e.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:67259263 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-02-08 16:37:52.870740564 +0800
最近更改:2023-02-08 16:37:52.870740564 +0800
最近改动:2023-02-08 16:38:20.823723902 +0800
创建时间:-
[root@localhost data]# ll e.txt
-rw-r--r--. 1 root root 0 2月 8 16:37 e.txt
5)重命名文件,同目录下移动等于重命名文件;用stat查看只有ctime发生变化。
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:37 e.txt
drwxr-xr-x. 2 root root 99 2月 8 17:01 test12
[root@localhost data]# mv e.txt end.txt
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 8 16:37 end.txt
drwxr-xr-x. 2 root root 99 2月 8 17:01 test12
[root@localhost data]# stat end.txt
文件:"end.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:67259263 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-02-08 16:37:52.870740564 +0800
最近更改:2023-02-08 16:37:52.870740564 +0800
最近改动:2023-02-08 17:06:35.301346390 +0800
创建时间:-
总结
mv命令使用-f参数要谨慎些,最好先确认下目标目录下有没有同文件的信息,若不放心,可以直接用-b参数或者--backup,同文件会保留下来。