正規表現でコマンドを探す

正規表現でコマンドを探す

正規表現について質問があります。

2つのコマンドがあります。

find / -regex '.*[^-_./0-9a-zA-Z].*'

find /

私が正しい場合は、両方のコマンドが同じ結果を出力する必要があります。なぜなら、最初のコマンドには.*最初に現れる正規表現があるからです。これは、「すべての文字を検索し、そのうち0つ以上が表示される可能性がある」ことを意味します。これはすべてのファイル名を意味します。ファイル名はスペース("")を含む任意の文字で構成でき、ゼロ文字は不可能であるため(ファイルに名前がないことを意味します)。だから結局同じ結果が出たようです。

しかし、「結果ライン出力」を意味するとともに、これらのコマンドを使用すると| wc -l結果が異なります。

私は何を逃したことがありませんか?

ベストアンサー1

例は次のとおりです。 * .* は 0 個以上の任意文字を意味します。 2 番目のケースでは、除外されていない文字の 1 つが次の 0 文字と一致します。

ls 
1  a  =a  ++a  a.0  a_1  B  b0

find .
.
./B
./=a
./b0
./a_1
./a
./1
./a.0
./++a

find . -regex '.*[^-_./0-9a-zA-Z].*'
./=a
./++a

おすすめ記事