2014-02-14 363 views
1

我經常做不同的項目,有時缺少文檔。在源代碼中搜索

所以我決定使用開源代碼來查看人們如何解決不同的問題。

這個想法是,如果我運行功能,我不怎麼使用我尋找不同的開發人員使用該功能之前。

方法: 我下載了其他人完成的一些相當不錯的項目,並將它們放到一個文件夾中。

現在,如果我不知道怎麼一個功能時(如主()),我做的:

find . -name \*.py | xargs cat | grep -n "main()" 

因此我得到它的使用的例子: enter image description here

但有是一個問題。我不知道來自哪個文件的例子。如果可以獲取文件的名稱以及行數,這將是完美的。
它似乎是使用「貓」命令的限制,因爲它將所有文件混合在一起,因此我得到的信息不是在文件中,而是在貓輸出中。所以我覺得這種方法根本不好。

即 我希望能夠在過多的源代碼 中查找函數/符號,並獲得有關符合某個組合的行和文件的信息。
我更喜歡console-way。

有什麼建議嗎?

回答

3

試試這個:

find . -name \*.py -exec grep -nH "main()" {} \; 

說明

的 「-exec」 選項說,執行下面的命令,直到\;找到每個文件。

grep的「-H」選項會導致它打印找到該字符串的文件的名稱。

「-n」選項會導致grep打印行號。

{}是一個佔位符,擴展爲剛剛找到的「find」文件的名稱。

+0

什麼是「-exec」選項? – Tebe

+0

它執行後面的命令,直到\;你可以使用{}作爲它找到的文件的名字 –

0

我不會從bash的角度回答你。

我不知道您使用的編輯器/ IDE,但代碼解剖有我那麼沒有更好的工具:

  • 的Vim C標籤組合
  • CTRL-P,CTRL-P時髦和MRU插件+
  • 正確的搜索和正則表達式的用法。
  • 良好的vim調試

沒有代碼的一部分不能被檢查。對不起,如果使用其他工具,我只是建議你,我發現哪些是最適合我的代碼分析。

1

你只需要grep命令:

$ grep -nr 'main()' /path/to/projects/folder/* | grep '.py:' 
+0

很好的答案!儘管它有一個缺陷。這就是說,搜索不僅在.py擴展名的文件中完成,而且也在所有其他文件中(二進制例如http://minus.com/lHB8dOeYP9YuA)完成。什麼來自使用搜索模式/路徑/到/項目/文件夾/ *。使用第二個grep可以隱藏這個效果。但它如此如此解決 – Tebe