2010年8月7日 星期六

命令代換: 找出許多檔案, 逐一編輯

小麥老師為了在台中市網教師研習上演講, 整理了 一些講義和連結, 其中一大部分在談隨身碟開機, 比我自己為 mk-boot-usb 寫的文件豐富多了。 我的網頁內也有多處指到小麥老師關於 mk-boot-usb 的舊文章; 現在要如何把我的網頁裡的舊連結更新呢?

因為指向小麥 moodle 的舊連結不只一個; 有些也不見得是談隨身碟, 所以一定要用人工逐一檢查。 希望可以把所有 「含有 www.wkb.idv.tw 子字串」 的檔案調出來, 用一個 vim 指令逐一人工檢查, 像這樣:

vim b/slax/index.php b/mo/index.php ... s/pref.php

當然, 我們千萬不可忘記資訊人的重要美德 - 懶惰。 機械化/重複性的工作, 例如剪貼一大堆檔名, 當然應該讓電腦替我們服務, 而不是我們替電腦服務。 所以這樣下:

cd ~/public_html
grep -l www.wkb.idv.tw $(find . -type f) > ~/files.txt
vim $(cat ~/files.txt)

其中 grep 的 -l 是指: 找到字串時, 列出檔名就好, 不必列出比對成功的內容。 當然後兩句也可以合在一起寫:

vim $(grep -l www.wkb.idv.tw $(find . -type f))

不過我自己比較小心, 習慣分兩步, 先確認找出來的檔案無誤, 再編輯。 用白話文講, 意思是: "列出所有檔案名稱 (不要目錄或連結), 到每個檔案去挖字串, 凡是挖到特定字串的檔案, 都打開來編輯"。 感受到 command substitution 命令結果代換 的原力了嗎?

至於部落格上的文章... 就只好想到一篇改一篇了。 命令列加文字檔才是王道呀!

1 則留言:

  1. 命令列加文字檔真的是王道...超好用的..

    可惜我這個小肉腳..命令一個一個拆開都很熟...
    組合在一起的能力還差的遠...

    老師這篇是好東西...學起來..(抄筆記)..

    回覆刪除