# mv 命令
[TOC]
mv命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。
source表示源文件或目錄,target表示目標文件或目錄。
如果將一個文件移到一個已經存在的目標文件中,則目標文件的內容將被覆蓋。
mv命令可以用來將源文件移至一個目標文件中,或將一組文件移至一個目標目錄中。
源文件被移至目標文件有兩種不同的結果:
如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變。
如果目標文件不是目錄文件,則源文件名(只能有一個)會變為此目標文件名,并覆蓋己存在的同名文件。
如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。
當目標文件是目錄文件時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標文件中。
所有移到該目錄下的文件都將保留以前的文件名。
>[danger] 注意事項:mv與cp的結果不同,mv好像文件“搬家”,文件個數并未增加。而cp對文件進行復制,文件個數增加了。
## 語法
`mv (選項) (參數)`
## 選項
~~~
--backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,為其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄;
-i:交互式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入”y”,表示將覆蓋目標文件;輸入”n”,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
--strip-trailing-slashes:刪除源文件中的斜杠“/”;
-S<后綴>:為備份文件指定后綴,而不使用默認的后綴;
--target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
-t:--target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
~~~
## 參數
~~~
源文件:源文件列表。
目標文件:如果“目標文件”是文件名則在移動文件的同時,將其改名為“目標文件”;
如果“目標文件”是目錄名則將源文件移動到“目標文件”下。
~~~
# 實例
## 將文件text1改名為text2
~~~
[root@localhost test]# touch text1
[root@localhost test]# ls
text1
[root@localhost test]# mv text1 text2
[root@localhost test]# ls
text2
~~~
### 將/usr/loca/src/nginx-1.2.9中的所有文件移動到當前目錄(用.表示即可)中
~~~
[root@localhost test]# mv /usr/local/src/nginx-1.2.9 .
~~~
### 將文件log1.txt,log2.txt,log3.txt移動到目錄test3中
~~~
[root@localhost test]# mv log.txt log2.txt log3.txt ./test3/
[root@localhost test3]# ls
log2.txt log3.txt log.txt
[root@localhost test3]# mv -t /test/test4/ log1.txt log2.txt log3.txt # 將這三個文件移動到test4目錄中去
[root@localhost test3]# cd ..
[root@localhost test]# cd test4/
[root@localhost test4]# ll
log2.txt log3.txt log.txt
~~~
### 將文件file1改名為file2,即使file2存在,也是直接覆蓋掉
命令:`mv -f log3.txt log2.txt`
輸出:
~~~
[root@localhost test4]# ls
log2.txt log3.txt log.txt
[root@localhost test4]# mv log3.txt log.txt
mv:是否覆蓋“log.txt”? n
[root@localhost test4]# mv log3.txt log.txt -f
[root@localhost test4]# ls
log2.txt log.txt
~~~
>[danger] 注意:log3.txt的內容直接覆蓋了log2.txt內容,-f 這是個危險的選項,使用的時候一定要保持頭腦清晰,一般情況下最好不用加上它。
### 文件被覆蓋前做簡單備份,前面加參數-b
命令:`mv log1.txt -b log2.txt`
輸出:
~~~
[root@localhost test5]# ll
-rw-r--r-- 1 root root 25 10-28 07:02 log1.txt
-rw-r--r-- 1 root root 13 10-28 06:16 log2.txt
-rw-r--r-- 1 root root 29 10-28 06:05 test1.txt
drwxr-xr-x 2 root root 4096 10-25 17:56 test5-1
[root@localhost test5]# mv log1.txt -b log2.txt
mv:是否覆蓋“log2.txt”? y
[root@localhost test5]# ll
-rw-r--r-- 1 root root 25 10-28 07:02 log2.txt
-rw-r--r-- 1 root root 13 10-28 06:16 log2.txt~
-rw-r--r-- 1 root root 29 10-28 06:05 test1.txt
drwxr-xr-x 2 root root 4096 10-25 17:56 test5-1
~~~
**說明:**
>[warning] -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:使用簡單備份:在被覆蓋前進行了簡單備份,簡單備份只能有一份,再次被覆蓋時,簡單備份也會被覆蓋。
- Linux的安裝
- Linux的軟件安裝管理
- Linux零碎的命令
- 了解ssh
- 系統調優及安全設置
- Linux系統中的硬鏈接和軟連接
- Linux文件和目錄的屬性及權限
- 命令總結
- 文件目錄管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件檢測內核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作場景應用總結
- 自動刪除n天前日志
- 刪除一個目錄下的所有文件但保留一個文件
- Linux軟件安裝
- php安裝(apache版本)
- vsftpd安裝
- git安裝
- python安裝
- LNMP安裝
- LAMP安裝I
- LAMP安裝II
- svn安裝
- svn在Linux下的命令操作
- svn鉤子簡介
- svn代碼上傳流程
- Crond介紹
- sersync應用指南
- 其他
- 小結一
- 系統調優重新整理tmp
- linux禁止root用戶直接登錄sshd并修改默認端口