linux mv文件移動命令詳解

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 6月   9 15:29 dir1
-rw-r--r-- 1 root root  0 6月   9 15:29 file1
-rw-r--r-- 1 root root  0 6月   9 15:29 file2
-rw-r--r-- 1 root root  0 6月   9 15:29 file3
-rw-r--r-- 1 root root  0 6月   9 15:29 file4
[root@localhost mv]# ll dir1/
總用量 4
-rw-r--r-- 1 root root 4 6月   9 15:29 file1
-rw-r--r-- 1 root root 0 6月   9 15:29 file2
-rw-r--r-- 1 root root 0 6月   9 15:29 file3
-rw-r--r-- 1 root root 0 6月   9 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 6月   9 15:37 dir1
-rw-r--r-- 1 root root  5 6月   9 15:38 file1
-rw-r--r-- 1 root root  5 6月   9 15:38 file2
-rw-r--r-- 1 root root  0 6月   9 15:29 file3
-rw-r--r-- 1 root root  0 6月   9 15:29 file4
[root@localhost mv]# ll dir1/
總用量 4
-rw-r--r-- 1 root root 5 6月   9 15:30 file1
-rw-r--r-- 1 root root 0 6月   9 15:29 file2
-rw-r--r-- 1 root root 0 6月   9 15:29 file3
-rw-r--r-- 1 root root 0 6月   9 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~")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章