Linux中國

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

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

第一個場景

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

在這種情況下,能否精確的解決取決於你複製文件的時候是否保持了原來的文件樹結構,還是你僅僅只是把所有文件全部複製到了一個指定的地方。如果我們只是想把所有的文件保存到一個文件夾中,或許這樣做是為了將這些文件歸檔,那麼我們可以使用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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國