简介
mv(英文全拼:move file)命令可以移动文件或对其改名、或将文件或目录移入其它位置。
命令格式
mv [OPTION]… [-T] SOURCE DEST mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用参数
-i | 若存在同名文件,则向用户询问是否覆盖 |
---|---|
-f | 在mv操作要覆盖某已有的目标文件时不给任何指示 |
-b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
-n | 不要覆盖任何已存在的文件或目录 |
四种情况说明
mv source_file(文件) dest_file(文件) | 将源文件名 source_file 改为目标文件名 dest_file |
---|---|
mv source_file(文件) dest_directory(目录) | 目录名 dest_directory 已存在,将文件 source_file 移动到目标目录 dest_directory 中 目录名 dest_directory 不存在则 ,抛出一个错误 |
mv source_directory(目录) dest_directory(目录) | 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中; 目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory |
mv source_directory(目录) dest_file(文件) | 出错 |
[root@localhost ~]# echo aaa > file_a.txt
[root@localhost ~]# echo bbb > file_b.txt
[root@localhost ~]# echo ccc > file_c.txt
[root@localhost ~]# head -v file_*.txt
==> file_a.txt <==
aaa
==> file_b.txt <==
bbb
==> file_c.txt <==
ccc
## mv 文件到文件
[root@localhost ~]# mv file_a.txt file_d.txt ## 复制到一个不存在的文件
[root@localhost ~]# cat file_d.txt
aaa
[root@localhost ~]# alias mv ## 设置了一个别名,覆盖重名文件时,则提示是否覆盖
alias mv='mv -i'
[root@localhost ~]# mv file_d.txt file_b.txt ## 覆盖到一个已经存在的文件,则提示是因为设置了别名,
mv: overwrite ‘file_b.txt’? y
[root@localhost ~]# cat file_b.txt
aaa
## mv 文件到目录
[root@localhost ~]# mkdir test
[root@localhost ~]# mv file_b.txt test2/ ## 移动到一个不存在的目录
mv: cannot move ‘file_b.txt’ to ‘test2/’: Not a directory
[root@localhost ~]# mv file_b.txt test ## 移动到一个存在的目录
[root@localhost ~]# tree test
test
└── file_b.txt
0 directories, 1 file
## mv 移动目录到目录
目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;
目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
## mv 移动目录到文件
[root@localhost ~]# mv test file_c.txt
mv: overwrite ‘file_c.txt’? y
mv: cannot overwrite non-directory ‘file_c.txt’ with directory ‘test’
示例
## -b 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份
[root@localhost ~]# echo aaa > filea.txt
[root@localhost ~]# echo bbb > fileb.txt
[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 4 May 17 17:13 filea.txt
-rw-r--r--. 1 root root 4 May 17 17:13 fileb.txt
[root@localhost ~]# mv -b filea.txt fileb.txt
mv: overwrite ‘fileb.txt’? y
[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 4 May 17 17:13 fileb.txt
-rw-r--r--. 1 root root 4 May 17 17:13 fileb.txt~
[root@localhost ~]# cat fileb.txt ## 已经被 filea.txt 覆盖
aaa
[root@localhost ~]# cat fileb.txt~ ## 保留了一个备份文件
bbb