// 使用 shell 在多個檔案中尋找<br />find . -type f | xargs grep flash<br />說明:<br />找出前目錄及其子目錄下的檔案中含有 flash 的檔案<br />//<br />重點記錄下 xargs 命令:<br />xargs 在標準輸入上取得參數列表、一行一個,再將他們以適當的大小組起來(由主機的 ARG_MAX 值決定)傳給另一個命令,此命令在作為 xargs 的參數.<br />ARG_MAX 值查看方法:<br />getconf ARG_MAX<br />//<br />//<br />在多個檔案中尋找使用命令替換也可以完成<br />grep flash $( find . -type f)<br />說明:<br />$() 是命令替換,括弧內是 shell 命令;shell 執行括弧內的命令並將整個 $(...) 替換為 命令的輸出<br />命令替換的形式有兩種,一種是 $(),另一種是使用兩個反引號 `find . -type f`
// 多個檔案中替換 - sed<br />為了保證不該替換的不被替換,先在檔案中尋找一下哪些會被替換<br />find -type f ! -path '*.svn*' | xargs sed -n '/Ookong inc/p'<br />說明:<br />1, find 首先過濾掉 .svn 目錄及其子目錄<br />2, xargs 傳遞參數給 sed 命令<br />3, sed 執行尋找, 只列印符合要求的行<br />//<br />// 替換<br />find -type f ! -path '*.svn*' | xargs sed -i 's/Ookong inc/Ookong Ltd. Co./g'<br />說明:<br />1, sed 的 i 選項直接在檔案中替換,而不是把替換結果列印出來<br />2, g 對每行中所有匹配執行替換<br />//<br />//<br />另外:一個 perl 多檔案尋找的程式: ack<br />-- 顯示所在的行號及所在的檔案