したがって、私の理解が正しければ、名前に少なくとも 2 つのドットを追加したファイル名を取得する必要があります。これは次のようになります。
$ find -regex ".*\.+[^.]*\.+[^.]*\.+.*"
./testing.1234.hello.this.is.a.file.ext
./testing1234.hellothisisafile.ext
$ find -regex ".*\.+[^.]*\.+[^.]*\.+[^.]*\.+.*"
./testing.1234.hello.this.is.a.file.ext
キー ドット検出部分は\.+
(少なくとも 1 つのドット)、分離するもの (ドット以外、ただし前の部分で既にカバーされています。貪欲な一致に対する安全対策) と結合されています[^.]*
。これらを合わせて正規表現のコア部分を構成します - 前後がどうであれ、どこかに 3 つのドットがあるだけです。現在のディレクトリの 1 つも重要であるため、3 つ - 他の場所から検索する場合は、1 つの\.+[^.]*
グループを削除します。
$ find delme/ -regex ".*\.+[^.]*\.+[^.]*\.+[^.]*\.+.*"
delme/testing.1234.hello.this.is.a.file.ext
$ find delme/ -regex ".*\.+[^.]*\.+[^.]*\.+.*"
delme/testing.1234.hello.this.is.a.file.ext
この場合、名前に多くのドットが含まれているため、結果は同じですが、2 番目の正規表現が正しいものです。