mv命令是move的縮寫,能夠用來移動文件或者將文件更名(move (rename) files),是Linux系統下經常使用的命令,常常用來備份文件或者目錄。php
1.命令格式:
mv [選項] 源文件或目錄 目標文件或目錄linux
mv 第一個參數 第二個參數ui
2.命令功能:
視mv命令中第二個參數類型的不一樣(是目標文件仍是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。spa
當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也能夠是源目錄名),它將所給的源文件或目錄重命名爲給定的目標文件名。code
當第二個參數是已存在的目錄名稱時,源文件或目錄參數能夠有多個,mv命令將各參數指定的源文件均移至目標目錄中。io
在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的連接也將丟失。class
3.命令參數(即選項):
-b:若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋。
-i :若目標文件(destination) 已經存在時,就會詢問是否覆蓋!
-u:若目標文件(destination) 已經存在,且 源文件source 比較新,纔會更新(update)。
-t :即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的狀況,此時目標目錄在前,源文件在後。test
4.命令實例:(注意我加 下劃線 的目的爲了便於區分)變量
實例一:文件更名
命令:
mv test.log test1.txt擴展
說明:
將文件test.log重命名爲test1.txt(注意linux中不以擴展名區分文件類型)
-----------------------------------------------------------------------------
實例二:移動文件
命令:
mv test1.txt test3
說明:
將test1.txt文件移到目錄test3中
-----------------------------------------------------------------------------
實例三:將文件log1.txt,log2.txt,log3.txt移動到目錄test3中。
命令:
mv log1.txt log2.txt log3.txt test3
mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt
說明:
mv log1.txt log2.txt log3.txt test3 命令將log1.txt ,log2.txt, log3.txt 三個文件移到 test3目錄中去
mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 命令又將三個文件移動到test4目錄中去
-t :即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的狀況,此時目標目錄在前,源文件在後。
-----------------------------------------------------------------------------
實例四:將文件log1.txt更名爲log2.txt,若是log2.txt已經存在,則詢問是否覆蓋。
命令:
mv -i log1.txt log2.txt
-i :若目標文件(destination) 已經存在時,就會詢問是否覆蓋!
-----------------------------------------------------------------------------
實例五:將文件log3.txt更名爲log2.txt,即便log2.txt已經存在,也是直接覆蓋掉。
命令:
mv -f log3.txt log2.txt
-f :force 強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋。
說明:
log3.txt的內容直接覆蓋了log2.txt內容,-f 這是個危險的選項,使用的時候必定要保持頭腦清晰,通常狀況下最好不用加上它。
-----------------------------------------------------------------------------
實例六:目錄的移動
命令:
mv dir1 dir2
說明:
若是目錄dir2不存在,將目錄dir1更名爲dir2;
若是目錄dir2存在,則將目錄dir1移動到目錄dir2中。
-----------------------------------------------------------------------------
實例七:移動當前文件夾下的全部文件到上一級目錄
命令:
mv * ../
-----------------------------------------------------------------------------
實例八:把當前目錄的一個子目錄裏的文件移動到另外一個子目錄裏
命令:
mv test3/*.txt test5
-----------------------------------------------------------------------------
實例九:文件被覆蓋前作簡單備份,前面加參數-b。
命令:
mv log1.txt -b log2.txt
用log1.txt裏面的內容覆蓋log2.txt裏面的內容,覆蓋後的文件名是log2.txt,覆蓋前對log1.txt的內容進行備份,備份的文件名字爲log2.txt~。
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# ls
log1.txt log2.txt
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# cat log1.txt
abcd
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# cat log2.txt
haha
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 10 13:19 ./
drwxr-xr-x 4 root root 4096 Jan 10 13:18 ../
-rw-r--r-- 1 root root 5 Jan 10 13:19 log1.txt
-rw-r--r-- 1 root root 5 Jan 10 13:19 log2.txt
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# mv log1.txt -b log2.txt
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 10 13:21 ./
drwxr-xr-x 4 root root 4096 Jan 10 13:18 ../
-rw-r--r-- 1 root root 5 Jan 10 13:19 log2.txt
-rw-r--r-- 1 root root 5 Jan 10 13:19 log2.txt~
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# ls
log2.txt log2.txt~
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# cat log2.txt
abcd
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01# cat log2.txt~
haha
root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/01#
說明:
-b 不接受參數,mv會去讀取環境變量VERSION_CONTROL來做爲備份策略。
--backup該選項指定若是目標文件存在時的動做,共有四種備份策略:
1.CONTROL=none或off 表示不備份。
2.CONTROL=numbered或t 表示數字編號的備份
3.CONTROL=existing或nil 表示若是存在以數字編號的備份,則繼續編號備份m+1...n
例如:執行mv操做前已存在以數字編號的文件log2.txt.~1~,那麼再次執行將產生log2.txt~2~,以次類推。若是以前沒有以數字編號的文件,則使用下面講到的簡單備份。
4.CONTROL=simple或never 表示使用簡單備份,在被覆蓋前進行了簡單備份,簡單備份只能有一份,再次被覆蓋時,簡單備份也會被覆蓋。
(實例九:採用的是簡單備份)