文章目录


1.移动文件

[root@localhost mv]# ls
dir1 file1
[root@localhost mv]# mv file1 dir1/
[root@localhost mv]# ls
dir1
[root@localhost mv]# ls dir1/
file1

2.移动多个文件

第一种:

[root@localhost mv]# ls
dir1 file1 file2
[root@localhost mv]# mv file1 file2 dir1/
[root@localhost mv]# ls
dir1
[root@localhost mv]# ls dir1/
file1 file2

第二种

[root@localhost mv]# ls
dir1 file1 file2
[root@localhost mv]# mv file* dir1/
[root@localhost mv]# ls
dir1
[root@localhost mv]# ls dir1/
file1 file2

3.移动目录

[root@localhost mv]# ls
dir1
[root@localhost mv]# mkdir dir2
[root@localhost mv]# ls
dir1 dir2
[root@localhost mv]# mv dir1 dir2
[root@localhost mv]# ls
dir2
[root@localhost mv]# ls dir2/
dir1

4.重命名文件或目录

[root@localhost mv]# ls
dir2 file1
[root@localhost mv]# mv file1 file2
[root@localhost mv]# mv dir2 dir1
[root@localhost mv]# ls
dir1 file2

5.打印移动信息

当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了

[root@localhost mv]# ls
dir1 file1 file2 file3 file4
[root@localhost mv]# mv -v file* dir1/
"file1" -> "dir1/file1"
"file2" -> "dir1/file2"
"file3" -> "dir1/file3"
"file4" -> "dir1/file4"

[root@localhost mv]# ls
dir1 subdir1 subdir2 subdir3 subdir4
[root@localhost mv]# mv -v subdir* dir1/
"subdir1" -> "dir1/subdir1"
"subdir2" -> "dir1/subdir2"
"subdir3" -> "dir1/subdir3"
"subdir4" -> "dir1/subdir4"

6.使用交互模式

当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。)

[root@localhost mv]# cat /root/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
[root@localhost mv]# ls
dir1 file1
[root@localhost mv]# ls dir1/
file1
[root@localhost mv]# mv -i file1 dir1/
mv:是否覆盖"dir1/file1" y
[root@localhost mv]# ls
dir1
[root@localhost mv]# ls dir1/
file1

7.使用更新选项

  • -u 则只在源文件比目标文件新时才执行更新。默认也会询问是否覆盖。
  • -f 为强制覆盖
[root@localhost mv]# ll
总用量 0
drwxr-xr-x 2 root root 58 69 15:29 dir1
-rw-r--r-- 1 root root 0 69 15:29 file1
-rw-r--r-- 1 root root 0 69 15:29 file2
-rw-r--r-- 1 root root 0 69 15:29 file3
-rw-r--r-- 1 root root 0 69 15:29 file4
[root@localhost mv]# ll dir1/
总用量 4
-rw-r--r-- 1 root root 4 69 15:29 file1
-rw-r--r-- 1 root root 0 69 15:29 file2
-rw-r--r-- 1 root root 0 69 15:29 file3
-rw-r--r-- 1 root root 0 69 15:29 file4
[root@localhost mv]# mv -uv file* dir1/
mv:是否覆盖"dir1/file1"? y
"file1" -> "dir1/file1"

或者
[root@localhost mv]# mv -uvf file* dir1/
"file1" -> "dir1/file1"

8.不要覆盖任何已存在的文件

  • -i 选项询问我们是否要覆盖文件
  • -n 选项将不会允许我们覆盖任何已存在的文件
[root@localhost mv]# ls
dir1 file1 file2 file3 file4
[root@localhost mv]# ls dir1/
file2 file3 file4
[root@localhost mv]# mv -nv file* dir1/
"file1" -> "dir1/file1"

9.复制时创建备份

-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份

[root@localhost mv]# ll 
总用量 8
drwxr-xr-x 2 root root 58 69 15:37 dir1
-rw-r--r-- 1 root root 5 69 15:38 file1
-rw-r--r-- 1 root root 5 69 15:38 file2
-rw-r--r-- 1 root root 0 69 15:29 file3
-rw-r--r-- 1 root root 0 69 15:29 file4
[root@localhost mv]# ll dir1/
总用量 4
-rw-r--r-- 1 root root 5 69 15:30 file1
-rw-r--r-- 1 root root 0 69 15:29 file2
-rw-r--r-- 1 root root 0 69 15:29 file3
-rw-r--r-- 1 root root 0 69 15:29 file4

[root@localhost mv]# mv -bvf file* dir1/
"file1" -> "dir1/file1" (备份:"dir1/file1~")
"file2" -> "dir1/file2" (备份:"dir1/file2~")
"file3" -> "dir1/file3" (备份:"dir1/file3~")
"file4" -> "dir1/file4" (备份:"dir1/file4~")
[root@localhost mv]# ls dir1/
file1 file1~ file2 file2~ file3 file3~ file4 file4~

or如何没有更新的文件不想被覆盖与备份则:
[root@localhost mv]# mv -ubvf file* dir1/
"file1" -> "dir1/file1" (备份:"dir1/file1~")
"file2" -> "dir1/file2" (备份:"dir1/file2~")