Linuxでテキストパターンを検索する


20

私はLinux初心者です。/ home / user1 /の下にあるすべての* .javaファイル(サブフォルダーを含む)で文字列「teststring」を検索する必要があります。Linuxでシェルコマンドを使用してそれを行うにはどうすればよいですか?


コマンドラインからサブディレクトリ内の正規表現検索ファイルに関するいくつかの質問がありました
-RobotHumans

クイック検索でこの質問が
見つかりました

find / home / user1 -name * .javaで拡張子を持つファイルをリストできます。その上でgrepを使用する方法は?
ダースベイダー

回答:


23

最も簡単な方法は、GNU grepの機能を使用することです。

grep -r --include '*.java' teststring /home/user1

GNU grepを持たない別のUNIXバリアントを使用している場合、以下の移植可能な方法があります。

find /home/user1 -name '*.java' -exec grep teststring {} +

niceは、このgrep機能について知らなかった
RobotHumans

1
あなたが現在のディレクトリとすべてのファイルを検索している場合、それはだgrep -r teststring .
クリスMoschini


4

このack別名ack-grepについては、私の頭の中のキラーアプリです;)

次のことができますack some_string /in/path_y見つけるためにsome_stringpath_y それとも単純にack some_other_string現在のディレクトリにsome_other_stingを見つけること。


2

それを見つけた。誰かを助けるかもしれないとしてそれを投稿する。

find /home/user01 -name *.java | xargs grep "teststring"

より良い方法がある場合は修正してください。


3
一般的に、あなたが使用する必要があります-print0-0、配管ときfindxargs、その名前にスペースや改行を持っている可能性のあるファイルを正しく動作させるには:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
一時停止は、追って通知があるまで。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.