每天一個linux命令:mv

每天一個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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章