正規表現は有効ですが、「検索」を使用してファイルと一致しません。

正規表現は有効ですが、「検索」を使用してファイルと一致しません。

隣接する小文字と大文字の間にスペースを入れることを目的として、ファイルをcamelCase名と一致させるためにこのコマンドを実行しようとしていますが、何findも一致しません。

find -E . -regex "([a-z])([A-Z])"

一致させるファイルの例は次のとおりです。

./250 - ErosPhiliaAgape.mp3

このファイルでこの正規表現をテストしました。ここそして試合は成功した。

私のコマンドで私が何を間違っているのfind

答え1

似たようなものを探しているかもしれません。

find . -name "*[a-z][A-Z]*"

答え2

Find は-regexファイル名だけでなく、フルパスと一致します。つまり、 を見つけるには '.*foo' foo` が/path/to/foo必要です。あなたは次のようなものが欲しい:-regex, and not just

find  . -E -regex ".*[a-z][A-Z].*"

globを使用する方が簡単で-name 簡単です。提案ただし、正規表現の代わりにSYNを渡してください。

答え3

([a-z])([A-Z])これは矛盾が原因で発生します./250 - ErosPhiliaAgape.mp3。実際に([a-z])([A-Z])正確に一致する文字は2つだけです。-regexはい固定フルパスを一致させます。以下を使用して-regexファイルを検索するには名前には以下が含まれています正規表現では、次のように書くことができます(BSD / macOSfind構文)。

find -E . -regex '.*/[^/]*([a-z])([A-Z])[^/]*'

GNUは次のような同等物を探します。

find . -regextype posix-extended -regex '.*/[^/]*([a-z])([A-Z])[^/]*'

関連情報