この構造を使用してフォルダ名を取得する正規表現は何ですか?
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
)。