特定の構造のフォルダ名をキャプチャする正規表現

特定の構造のフォルダ名をキャプチャする正規表現

この構造を使用してフォルダ名を取得する正規表現は何ですか?

xxxx-x(x - 整数)

 ls /usr/hdp | .....
 2.6.0.3-8  current HG_MASTER 2.4.3 34.1 45-995

期待される出力

2.6.0.3-8



ls -lh /usr/hdp/
total 8.0K
drwxr-xr-x. 27 root root 4.0K Jan  1 15:24 2.6.0.3-8

ベストアンサー1

タグ付けした後、拡張globを使用して、シェルのファイル名を一致させることで実際にこれを行うことができます。

$ shopt -s extglob
$ touch /some/path/{2.6.0.3-8,22.66.0.333-8,foobar}
$ printf "%s\n" /some/path/+([0-9]).+([0-9]).+([0-9]).+([0-9])-+([0-9])
/some/path/22.66.0.333-8
/some/path/2.6.0.3-8

パターンは*またはなどのより一般的なパターンのように機能する*.pngため、固定部分(パスなど)を貼り付けることができます。/ディレクトリのみを一致させるには、後ろにスラッシュを追加してください。 (ただし、出力にはスラッシュも表示されます。)

ERE正規表現では、パターンは[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+。難読化されたバージョンは+([-.0-9])(またはEREで)のような許可された文字だけをチェックします[-.0-9]+が、もちろん例えば123..456

ファイル名のみを印刷したい場合はfind簡単ですが、ファイル名に対してコマンドを実行したい場合は、シェルループもオプションです(と共にfind -exec)。

おすすめ記事