170

grepは、ファイル内を検索して、特定の正規表現に一致する行があるかどうかを確認するために使用されます。ただし、このような状況があります。ファイル名自体(ファイルの内容ではない)に一致する正規表現を記述したいと思います。これをシステムのルートディレクトリから実行して、正規表現に一致するすべてのファイルを見つけます。

たとえば、「f」で始まり、.frmで終わるすべてのVisual Basicフォームファイルを検索する場合は、正規表現を使用します-

   "f[[:alnum:]]*\.frm"

grepはこれを行うことができますか?そうでない場合、これを可能にするユーティリティはありますか?

4

10 に答える 10

144

findこの場合の代わりに使用する必要がありますgrep

またはfindと組み合わせて使用​​することもできます。grepegrep

$ find | grep "f[[:alnum:]]\.frm"
于 2012-04-18T15:02:15.953 に答える
54

パブロが言ったように、findの代わりに使用する必要grepがありますが、にパイプfindする必要はありませんgrepfindその機能が組み込まれています:

find . -regex 'f[[:alnum:]]\.frm'

findは、名前でファイルを検索するための非常に強力なプログラムであり、ファイルの種類による検索、深さの制限、さまざまな検索用語とブール演算の組み合わせ、見つかったファイルに対する任意のコマンドの実行をサポートしています。詳細については、find のマニュアル ページを参照してください。

于 2014-08-11T21:10:27.173 に答える
11
find -iname "file_name"

Syntax:
find -type type_descriptor file_name_here

type_descriptorタイプ:

f: 通常ファイル

d: ディレクトリ

l: シンボリックリンク

c: キャラクターデバイス

b: ブロック デバイス

于 2015-11-23T16:50:05.687 に答える
4
find . | grep KeywordToSearch

これは、 findコマンドのパスパラメータ.の値である現在のディレクトリを意味します。一致するすべての結果を返す必要があるキーワードを検索するために grep にパイプされます。

注: これは大文字と小文字が区別されます。たとえばfileName、 とFileNameは同じではありません。

于 2021-01-28T08:07:18.217 に答える