即時通訊使用Ubuntu的業報作爲我的操作系統特定的字符串。我經常需要在我的項目文件夾中搜索特定的字符串,以查看它是否存在於項目文件夾或其子文件夾中的任何文件中。 我目前使用find命令來做到這一點,並已書面接受字符串即時尋找作爲參數的腳本。搜索代碼文件
find . -exec grep -l $1 {} \;
但問題在於,它不適用於在其中有空間的字符串。那麼,是否有任何方法可以搜索空格分隔的字符串,或者是否有任何可用的工具來完成這項工作?
謝謝。
即時通訊使用Ubuntu的業報作爲我的操作系統特定的字符串。我經常需要在我的項目文件夾中搜索特定的字符串,以查看它是否存在於項目文件夾或其子文件夾中的任何文件中。 我目前使用find命令來做到這一點,並已書面接受字符串即時尋找作爲參數的腳本。搜索代碼文件
find . -exec grep -l $1 {} \;
但問題在於,它不適用於在其中有空間的字符串。那麼,是否有任何方法可以搜索空格分隔的字符串,或者是否有任何可用的工具來完成這項工作?
謝謝。
你是如何調用你的腳本的?
如果你想搜索你需要做的
調用形式空格分隔字符串:
%./script_name.sh 'search string'
,改變它的查找調用到:
發現。 -exec grep -l「$ 1」{} \;
謝謝sateesh ...我認爲那工作:) – johnswr 2009-12-07 06:34:58
我相信你可以簡單地做grep -lR ${1} .
達到你所需要的。
一個更好的版本命令的僅僅是grep -rl "$1" .
,或者可能grep -rl "$*" .
。
如果你的字符串包含正確數量的空間,問題只是解析參數的shell,那麼你可以參考每個參數"$*"
,你可以防止shell在字邊界處斷開(但仍允許參數擴展)通過使用軟雙引號。
grep -R "phrase with spaces" /folder/folder
find/-type d -name "folder name" 2> /dev/null
我認爲用雙引號和反引號括起字符串應該可以工作。 「\'一些字符串\'」 – Amarghosh 2009-12-07 06:13:05
聽起來也許你應該探索['ctags'(http://en.wikipedia.org/wiki/Ctags)等人? – tripleee 2013-05-15 03:48:10