簡明Linux命令行筆記:mv

重命名、覆蓋或移動文件

mv [options] existing-file new-filenamepost

mv [options] existing-file-list directoryspa

mv [options] existing-directory new-directorycode

參數

第一種形式:existing-file 是須要重命名的文件路徑; new-filename 是文件的新路徑名,用於重命名或覆蓋blog

第二種形式:existing-file 是須要移動的文件路徑列表; directory 是文件須要移動到的新目錄,用於移動ip

第三種形式:existing-file 是須要重命名的目錄路徑; new-directory 是目錄的新路徑名,用於重命名或覆蓋字符串

選項

-b                若是已存在相同文件名,則覆蓋前進行備份it

-f                 若是已存在相同文件名,而用戶不具備寫的權限,則強制覆蓋io

-i                 若是已存在相同文件名,覆蓋前提示用戶進行確認class

-u                比較原文件與目標文件修改時間,若是目標文件較新則不覆蓋file

-v                列出全部被移動或重命名的文件

示例

mv

$ mv demo1.txt demo2.txt $ ls demo2.txt

重命名文件

mv -i

$ ls demo2.txt demo.txt $ mv demo2.txt -i demo.txt mv:是否覆蓋"demo.txt"? y

對已存在的文件覆蓋前進行確認,y或Y開頭的字符串表示肯定,其他任意字符表示否認

mv 不具有寫權限的文件名

複製代碼
$ ls -l 總用量 0 -rw-r--r-- 1 root root 0 1月 8 13:31 cc -rw-r--r-- 1 siu siu 0 1月 8 13:24 dd $ mv dd cc mv:是否覆蓋"cc",而不理會權限模式0644 (rw-r--r--)? y $ ls cc
複製代碼

此處cc的全部人和組都是root,而我當前用戶是siu,覆蓋時會要求確認

mv -f 不具有寫權限的文件名

複製代碼
$ ls -l 總用量 0 -rw-r--r-- 1 root root 0 1月 8 13:34 aa -rw-r--r-- 1 siu siu 0 1月 8 13:34 bb $ mv bb -f aa $ ls aa
複製代碼

與上面同樣,只不過此處加了 -f 選項,覆蓋時強制執行而不提示

mv 移動目錄

複製代碼
$ ls abc cde $ mv cde abc $ ls abc $ cd abc/ $ ls cde
複製代碼

此處將cde目錄移動到abc目錄中

mv 重命名目錄

$ ls abc $ mv abc dir $ ls dir

此處將abc目錄重命名爲dir目錄,mv abc ../可將abc移動到父目錄,此處靈活多變

mv -u

複製代碼
$ ls -l 總用量 0 -rw-r--r-- 1 siu siu 0 1月 8 13:43 time1.txt -rw-r--r-- 1 siu siu 0 1月 8 13:44 time2.txt $ mv time1.txt -u time2.txt $ ls time1.txt time2.txt
複製代碼

確認修改時間再判斷是否覆蓋,此處time2.txt的修改時間比time1.txt的修改時間新,因此覆蓋失敗

mv -v

$ mv time1.txt -v time2.txt "time1.txt" -> "time2.txt" $ ls time2.txt

列出移動或覆蓋時的信息

mv -b

$ mv -b aa.txt bb.txt $ ls bb.txt bb.txt~

覆蓋時進行備份,所備份的文件尾部有個~

Tips

1.在Linux中,覆蓋和重命名的概念幾乎是同樣的,沒有Windows中所謂的rename這一說法

2.選項你能夠寫在任意位置,能夠mv aa -v bb,也能夠 mv -v aa bb,還能夠 mv aa bb -v

相關文章
相關標籤/搜索