三個快速便捷的命令列小貼士

發表於2013-10-02

最近幾周裡,我總是收到人們詢問一些快速零散的問題。有時候一個人是在尋找一個有幫助的建議,或者一個具體的命令,或者一個命令列捷徑,以完成一個特定的任務。本篇將介紹最近人們向我提出的三個問題,以及完成這些任務的簡單方法。

第一個場景

我們要找到那些在過去的一個月中被改動過的檔案,並將他們從當前的位置複製到另一個目錄中去。

在這種情況下,能否精確的解決取決於你複製檔案的時候是否保持了原來的檔案樹結構,還是你僅僅只是把所有檔案全部複製到了一個指定的地方。如果我們只是想把所有的檔案儲存到一個資料夾中,或許這樣做是為了將這些檔案歸檔,那麼我們可以使用find這條命令。透過使用find命令,我們能夠根據檔案被修改的時間查詢到他們的位置,然後複製他們到指定的地方。這條命令看起來是這樣:

find Documents -mtime -30 -exec cp "{}" Backup \;

上面這條命令會在Documents資料夾中查詢在過去30天內被修改過的檔案。這些檔案之後將會被複制到另一個叫Backup的目錄中去。find命令將會透過呼叫cp命令來執行復制這一操作。透過修改mtime這條引數,我們可以查詢到最近某個時間內被修改過的檔案,在上面這個例子中它被設定為在過去的30天內。

更多的時候,我們會想要在把檔案複製到目標資料夾後,仍然能夠保留原始檔夾的目錄結構。很多時候,人們都希望兩個資料夾的內容同步,然後他們會執行一個指令碼來使他們保持一致。這種情況下,我們可能會用到rsync這條命令了。這個工具會把新檔案、修改過的檔案從一個複製到另一個目錄中去,同時保持源目錄的展示結構:

rsync -a Documents/ Backup

上面的例子,它會先找到哪些檔案在Documents中和Backup中都存在,以便不再複製這些不必要的檔案。

第二個場景

有一個我們都會做的很普遍的工作,就是在一個文字檔案中找到一個單詞,然後用另一個單詞把這個詞在文字中的所有例項都替換掉。

比如,假設我有一個文件中提到一個人名叫“Becky”,但是我後來決定還是用稍微正式點的稱呼“Rebecca”為好。對檔案中的這個簡單的改動,下面這條命令會起到作用:

perl -pi -e 's/Becky/Rebecca/' mydocument.txt

這條微型的Perl指令碼會查詢文件中所有“Becky”的例項,並且將之改為“Rebecca”。程式首先讀取名為mydocument.txt這個要改動的文件,待修改完畢後再儲存回去。

第三個場景

一個普遍關注的問題是,在一個硬碟要給別人或者被扔掉之前,需要對其中儲存的敏感資料做些什麼。

有些人會在電腦裡儲存一些銀行的業務資料或者稅務資訊,那麼這些資料最好在你的硬碟被轉手到別人之前被徹底清理掉。現在有一些方法和工具可以讓你使用。我最喜歡的一個是shred這條命令,它不僅能對單一檔案進行處理,同樣也能對整個裝置進行處理。要重寫一個檔案裡面的內容,我們可以這樣執行shred

shred mytaxes.odt

上面這個例子中,它會移除檔案裡存的內容,但並不會把檔案本身從硬碟中刪除掉。如果要清除檔案的內容同時刪除掉這個檔案,我們可以這樣執行:

shred -u mytaxes.odt

需要強調的一點是,shred並不是在所有的檔案系統中都能正常執行,尤其是那些帶有日誌功能的比較新的檔案系統。在shred的操作手冊中寫明瞭哪些檔案系統執行這個程式的時候會出問題。當處理敏感資料的時候,最好的方法也許是清除掉整張硬碟。shred同樣也能辦到。下面這個例子中,顯示瞭如何移除掉我們電腦中第一塊硬碟內的所有資料。使用這條命令一定要非常小心:

shred /dev/sda

 

via: http://distrowatch.com/weekly.php?issue=20130923

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

譯者:markvv 校對:wxy

相關文章