文字セットに対して N 回表示されるディレクトリ名の検索

文字セットに対して N 回表示されるディレクトリ名の検索

N個の文字サブセットを含むディレクトリ名を非再帰的に一致させる方法(使用find

私の特別なケースでは、6桁のディレクトリ名だけが欲しいです。これはうまくいきますが、具体的ではありません(数値とともにすべてのディレクトリ名が提供されます)。

find . -maxdepth 1 -type d -regex './[0-9]+'
ls -d +([0-9])

これはうまくいきますが、数字で始まり、後に何も来るディレクトリ名を提供します。

find . -maxdepth 1 -type d -name '[0-9]*'

私が読んだところでは、正規表現の代わりにglobを使用しているので、N回のマッチング方法がわかりませんls(そしてglobについては何も知りません)。私が理解していないのは、次のいずれも使用できないことですfind

find . -maxdepth 1 -type d -regex './[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]+'

私は正規表現を何度も試しましたが、私のパターンに何が問題なのかわかりません(それを指定する必要があることも驚くべきことです./-regex

答え1

regexGNUの基本的なタイプは、間隔をサポートしていないということfindです。emacs他の正規表現型を指定できます。たとえば、posix-egrepこれは問題を解決します。

find . -maxdepth 1 -type d -regextype posix-egrep -regex './[0-9]{6}'

関連情報