如何在 Linux 下乾坤大挪移?
來自:良許Linux(微信號:liangxuxiansheng)
mv 也是 Linux 下一個使用頻率非常高的命令,但除了一些基本用法,你還知道它的哪些高級用法呢?
1、基本用法
1、移動一個/多個文件;
2、移動一個/多個目錄;
3、重命名文件/目錄。
這些都是很基本的用法,無需贅述。下面介紹一些更高級的用法。
2、打印操作信息
我們如果只移動一兩個或少數幾個文件/目錄時,暫且還可以去目標位置去查看文件是否移動成功。但如果有千百個文件呢?如何在不去目標位置查看的情況下知道我們的操作是否已經成功了呢?我們可以加上?-v?選項。
[alvin@VM_0_16_centos?mv_test]$?mv?-v?*.txt?/home/alvin/test/mv_test/des/ ‘file1.txt’?->?‘/home/alvin/test/mv_test/des/file1.txt’ ‘file2.txt’?->?‘/home/alvin/test/mv_test/des/file2.txt’ ‘file3.txt’?->?‘/home/alvin/test/mv_test/des/file3.txt’ ‘file4.txt’?->?‘/home/alvin/test/mv_test/des/file4.txt’ ‘file5.txt’?->?‘/home/alvin/test/mv_test/des/file5.txt’當然,此方法同樣適用于移動目錄。
3、使用交互模式
在默認情況下,我們移動文件/目錄時,不會有任何提示。如果在目標位置我們有個相同名字的文件/目錄,mv 命令也不會提示而直接替換原來的文件。而這樣的操作,有時可能會造成災難性的后果。
在這種情況下,我們可以加一個?-i?選項,當目標位置有相同名字的文件時,它將會進行提示。如果你確認要覆蓋目標文件,鍵入 y 即可。
[alvin@VM_0_16_centos?mv_test]$?mv?-i?file1.txt?/home/alvin/test/mv_test/des/ mv:?overwrite?‘/home/alvin/test/mv_test/des/file1.txt’??y4、不覆蓋同名文件
如果目標位置有同名文件,我們不希望它被覆蓋,可以加上?-n?選項。
[alvin@VM_0_16_centos?mv_test]$?ll?*.txt?des/*.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?file2.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:35?file3.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?des/file1.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:27?des/file2.txt [alvin@VM_0_16_centos?mv_test]$?mv?-nv?*.txt?/home/alvin/test/mv_test/des/ ‘file3.txt’?->?‘/home/alvin/test/mv_test/des/file3.txt’????#目標位置沒有file3.txt文件,所以成功移動 [alvin@VM_0_16_centos?mv_test]$?ls des??file2.txt5、使用更新選項
當目標位置有同名文件/目錄時,我們只希望源文件比目標文件時間戳更新時,才進行覆蓋,否則不執行。這種情況下,我們可以使用?-u?選項。
[alvin@VM_0_16_centos?mv_test]$?ll?*.txt?des/*.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?file1.txt????#源文件比目標文件時間戳更新 -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?file2.txt????#源文件比目標文件時間戳更舊 -rw-rw-r--?1?alvin?alvin?0?Feb??8?16:53?des/file1.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:27?des/file2.txt [alvin@VM_0_16_centos?mv_test]$?mv?-uv?*.txt?/home/alvin/test/mv_test/des/ ‘file1.txt’?->?‘/home/alvin/test/mv_test/des/file1.txt’????#只有時間戳更新的文件被替換 [alvin@VM_0_16_centos?mv_test]$?ls des??file2.txt6、覆蓋前創建備份
目標位置已經有了同名文件,如果直接覆蓋總覺得有點不踏實,萬一現在的決定是錯的呢?有沒可能在覆蓋之前,先將目標文件進行備份?答案是肯定的,加一個?-b?選項即可。
[alvin@VM_0_16_centos?mv_test]$?mv?-bv?*.txt?/home/alvin/test/mv_test/des/ ‘file1.txt’?->?‘/home/alvin/test/mv_test/des/file1.txt’?(backup:?‘/home/alvin/test/mv_test/des/file1.txt~’) ‘file2.txt’?->?‘/home/alvin/test/mv_test/des/file2.txt’?(backup:?‘/home/alvin/test/mv_test/des/file2.txt~’) [alvin@VM_0_16_centos?mv_test]$?ll?des/ total?0 -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:41?file1.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?file1.txt~ -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:26?file2.txt -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:27?file2.txt~ -rw-rw-r--?1?alvin?alvin?0?Feb??8?17:35?file3.txt可以看到,在覆蓋之前,會將目標文件備份為一個帶波浪號 ~ 的文件,同時細心的讀者也會注意到,覆蓋后文件與備份文件的時間戳不一樣。
以上就是 mv 命令的一些更高級用法,靈活使用的話會為自己的工作效率提高一個檔次,在同事面前也更能裝逼。
總結
以上是生活随笔為你收集整理的如何在 Linux 下乾坤大挪移?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团技术四面经历,作者已拿到Offer!
- 下一篇: 一文读懂 Spring的前世今生