ack (ack-grepとしてパッケージ化されることもあります)を使用すると、次のようにして、特定の文字列を含むパスを見つけることができます。ack -g somestring
しかし、ファイル名に「somestring」が含まれているファイルのみが必要な場合はどうなりますか?
find
ユーティリティを使用できます。このようなもの:
find /path/to/look/in -name '*somestring*' -print
一部のシステムでは、パスを省略すると、現在のディレクトリが使用されます。他のシステムでは、それを省略することはできません。代わりに、現在のディレクトリに.
を使用してください。
また、他の多くのオプションについては、man find
をお読みください。
私はfindが進むべき道であることに同意しますが、ackで簡単にそれを行うこともできます:
ack -f | ack "string"
ここで、「ack -f」は、検索するすべてのファイルを再帰的にリストします。それを2番目のackコマンドにパイプして、それを検索します。 ack -fには、引数がなくてもバイナリとディレクトリをスキップできるという利点があります。多くの場合、「find」コマンドは、はるかに短い「ack」コマンドに置き換えることができます。
ack
を使用して、ベース名にsomestring
が含まれるすべてのファイルを検索する場合は、正規表現に[^/]*$
を追加するだけです。
ack -g somestring[^/]*$
残念ながら、--color
はsomestring
からファイル名の末尾までの一致を表示します。ただし、ack
を使用して要求したことを実行することは可能です。
まだコメントできません。さもないと、上記の@dmedvinskyの回答にこれを追加します。 .svn
ファイルを除外するために、彼のアプローチを@whaleyの 別の質問への回答 と組み合わせることができます。
find /path/to/look/in -not -iwholename '*.svn*' -name '*somestring*' -print