10

プログラムのソースコードをいくつかダウンロードしてフォルダに入れました 端末のフォルダから関数宣言を探したいのですが、シェルコマンドでそれを行うにはどうすればよいですか? ありがとう!

4

3 に答える 3

17

これをやってみてください

を使用:

grep -Hri function_name .

パスのみが必要な場合:

grep -ril function_name .

説明

  • 末尾.現在のディレクトリを表します
  • -i:大文字と小文字を区別しない
  • -r:再帰的
  • -H:各一致のファイル名を出力します
  • -l:通常の出力を抑制します。代わりに、出力が通常出力される各入力ファイルの名前を出力します。

見るman grep

最後だが大事なことは

興味深いツールはack.svnです。 、.cvs.gitdirs などでの検索を回避します... コードを検索するように設計されています。

例 :

$ cd /usr/share/perl5
$ ack -r 'Larry\s+Wall'
site_perl/Inline/C.pm
370:# bindings to. This code is mostly hacked out of Larry Wall's xsubpp program.

core_perl/overload/numbers.pm
5:#    Copyright (C) 2008 by Larry Wall and others

core_perl/CPAN.pm
876:#       From: Larry Wall <larry@wall.org>

または単にファイルパス:

$ ack -rl 'Larry\s+Wall'
vendor_perl/LWP.pm
site_perl/Inline/C.pm
core_perl/overload/numbers.pm
core_perl/CPAN.pm
core_perl/SelfLoader.pm
core_perl/AutoLoader.pm
core_perl/AutoSplit.pm
core_perl/Test/Harness.pm
core_perl/XSLoader.pm
core_perl/DB.pm

.(とack比べてgrep)で終わる必要はありません

于 2013-03-28T23:08:54.470 に答える
0

CScopeを使用してみてください。vi/vim もインストールする必要があります。

インストールしたら、関数を見つけたいフォルダーで次のコマンドを実行するだけです。

cscope -R

その後、メニューが表示され、すべてのシンボル、関数定義、関数を呼び出す関数などを検索するための多くのオプションが表示されます。

于 2015-06-23T18:16:03.267 に答える
0

これは、開いたディレクトリとサブディレクトリ内のすべてのファイルを調べ(ファイルまたはディレクトリ名にスペースがあると混乱しますが)、それらすべてから、入力した FUNCTION を検索し、へのパスを出力しますファイルを開き、一致する行を表示します。開いたディレクトリに ing して実行しcdます (FUNCTION を探している関数に置き換えます)。

find . -type f | xargs grep FUNCTION
于 2013-03-28T23:13:01.393 に答える