27

ack (ack-grep としてパッケージ化されることもあります) を使用すると、次のようにして特定の文字列を含むパスを見つけることができます。
ack -g somestring

しかし、ファイル名に「somestring」が含まれるファイルのみが必要な場合はどうすればよいでしょうか?

4

5 に答える 5

50

私はfindが進むべき道であることに同意します、しかしあなたはackでそれを簡単に行うこともできます:

ack -f | ack "string"

ここで、「ack -f」は、検索するすべてのファイルを再帰的にリストします。それを2番目のackコマンドにパイプして、それを検索します。ack -fには、引数がなくてもバイナリとディレクトリをスキップできるという利点があります。多くの場合、「find」コマンドは、はるかに短い「ack」コマンドに置き換えることができます。

于 2013-03-06T20:31:06.953 に答える
26

ユーティリティを使用できfindます。このようなもの:

find /path/to/look/in -name '*somestring*' -print

一部のシステムでは、パスを省略した場合、現在のディレクトリが使用されます。他のシステムでは省略できません.。代わりに現在のディレクトリに使用してください。

man findまた、他の多くのオプションについてもお読みください。

于 2011-10-08T18:33:46.367 に答える
-2

これは私にとってはうまくいきます。 ack -all "somestring" の場合、 ack --all "somestring" はその文字列を含むすべてのファイルを検索します。ack "somestring" は、その文字列を含むファイルのみを検索します。ruby ファイルのように永続的に検索するファイル タイプを追加する場合、またはホーム ディレクトリに .ackrc ファイルを作成する場合は、次の行 --type-add=ruby=.haml,.rake,.rsel を追加します。ジョッシュ

于 2012-04-12T19:29:46.900 に答える