每天一個linux命令:mv
更多精彩請關注:www.zicreate.com
1.命令功能
mv 即 move,可以用來移動文件或重命名文件。
mv 命令執行結果有如下兩種情況:
- 如果目標文件是一個目錄名,【源】是N個文件或目錄,則所有的【源】都會被移至目標目錄下。所有移到該目錄下的文件都將保留以前的文件名。當【源】有多個時,目標必須是目錄名。
- 如果目標文件是一個文件名,則源文件名(只能有一個)會變爲此目標文件名,並覆蓋己存在的同名文件。
- 如果源文件和目標文件在同一個目錄下,mv 的作用就是重命名。
2.命令格式
mv [選項] 源文件或目錄 目標文件或目錄
3.命令參數
--backup[=CONTROL] 對每個存在的目標文件備份;共有如下四種備份策略:
- CONTROL=none或off : 不備份。
- CONTROL=numbered或t:數字編號的備份
- CONTROL=existing或nil:如果存在以數字編號的備份,則繼續編號備份m+1...n:。執行mv操作前已存在以數字編號的文件log2.txt.~1~,那麼再次執行將產生log2.txt~2~,以次類推。如果之前沒有以數字編號的文件,則使用下面講到的簡單備份。
- CONTROL=simple或never:使用簡單備份,在被覆蓋前進行了簡單備份,簡單備份只能有一份,再次被覆蓋時,簡單備份也會被覆蓋。
-b 和--backup 一樣,但是不接受任何參數,mv會去讀取環境變量VERSION_CONTROL來作爲備份策略。
-f, --force 如果覆蓋已存在文件,那麼也不會有任何提示;
-i, --interactive 如果需要覆蓋,那麼會進行提示;
-n, --no-clobber 如果目標文件已存在,那麼不會進行覆蓋;
如果你指定了 -f, -i , -n 中的兩個或者三個,那麼只有最後一個有效。
-S, --suffix=SUFFIX 即替換通常的備份文件後綴,使用自定義後綴;
-t, --target-directory=DIRECTORY 該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後;該功能並無太大用處,不再講解。
-u, --update 當目標文件不存在,或者源文件比目標文件的 修改時間 更新時,該命令纔有效;
4.使用場景
場景1:重命名
將文件 test1.txt 移動到“/tmp/test/”目錄下,並重名名爲 test2.txt
$ mv test1.txt /tmp/test/test2.txt
場景2:將多個文件移動到指定目錄下
[.trash]# ls #顯示當前目錄下文件
test1.txt test2.txt test3.txt test4.txt
[.trash]# mkdir subdir #創建一個目錄“subdir”
[.trash]# mv test3.txt subdir/ #將test3.txt 移動到目錄 “subdir”
[.trash]# mkdir /tmp/test/nulldir #在目標位置創建一個空目錄
[.trash]# ls !$
ls /tmp/test/nulldir
[.trash]# mv * /tmp/test/nulldir/ #將當前目錄下的文件以及目錄都移動到目標目錄下,注意,【源】有多個時,目標必須爲目錄名
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test2.txt test4.txt
[.trash]# ls #移動後當前目錄空了
場景3:”–backup”常見操作
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test2.txt test4.txt
[.trash]# touch test1.txt test2.txt test3.txt test4.txt #創建文件
[.trash]# mv * /tmp/test/nulldir/ --backup=numbered
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test1.txt.~1~ test2.txt test2.txt.~1~ test3.txt test4.txt test4.txt.~1~
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv --backup=nil * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test1.txt.~1~ test1.txt.~2~ test2.txt test2.txt.~1~ test2.txt.~2~ test3.txt test3.txt.~1~ test4.txt test4.txt.~1~ test4.txt.~2~
場景4:其他命令參數操作
-S, –suffix=SUFFIX 即替換通常的備份文件後綴,使用自定義後綴;
[.trash]# \rm /tmp/test/nulldir/* -rf
[.trash]# ls /tmp/test/nulldir
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv -S .mysuf * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
test1.txt test2.txt test3.txt test4.txt
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv -S .mysuf * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
test1.txt test1.txt.mysuf test2.txt test2.txt.mysuf test3.txt test3.txt.mysuf test4.txt test4.txt.mysuf