2009-12-07 67 views
1

即時通訊使用Ubuntu的業報作爲我的操作系統特定的字符串。我經常需要在我的項目文件夾中搜索特定的字符串,以查看它是否存在於項目文件夾或其子文件夾中的任何文件中。 我目前使用find命令來做到這一點,並已書面接受字符串即時尋找作爲參數的腳本。搜索代碼文件

find . -exec grep -l $1 {} \; 

但問題在於,它不適用於在其中有空間的字符串。那麼,是否有任何方法可以搜索空格分隔的字符串,或者是否有任何可用的工具來完成這項工作?

謝謝。

+2

我認爲用雙引號和反引號括起字符串應該可以工作。 「\'一些字符串\'」 – Amarghosh 2009-12-07 06:13:05

+0

聽起來也許你應該探索['ctags'(http://en.wikipedia.org/wiki/Ctags)等人? – tripleee 2013-05-15 03:48:10

回答

1

你是如何調用你的腳本的?

如果你想搜索你需要做的
調用形式空格分隔字符串:

%./script_name.sh 'search string'

,改變它的查找調用到:

發現。 -exec grep -l「$ 1」{} \;

+0

謝謝sateesh ...我認爲那工作:) – johnswr 2009-12-07 06:34:58

0

我相信你可以簡單地做grep -lR ${1} .達到你所需要的。

1

一個更好的版本命令的僅僅是grep -rl "$1" .,或者可能grep -rl "$*" .

如果你的字符串包含正確數量的空間,問題只是解析參數的shell,那麼你可以參考每個參數"$*",你可以防止shell在字邊界處斷開(但仍允許參數擴展)通過使用雙引號。

0
grep -R "phrase with spaces" /folder/folder 
0
find/-type d -name "folder name" 2> /dev/null