Bashで正規表現を使用してフォルダが存在するかどうかをテストする方法は?

Bashで正規表現を使用してフォルダが存在するかどうかをテストする方法は?

私たちが知っているように、bashコマンドを実行すると、フォルダが存在するかどうかを簡単に確認できます。

[[ -d /opt/presto-server ]] && echo folder exist

しかし、フォルダがあれば

/opt/presto-server-32.34

では、正規表現を使用してフォルダが存在するかどうかを確認できますか?

このルールで

presto-server-<any charecter>

〜のように

presto-server-454.545
presto-server-4a-434
presto-server-aa-434-l

など

ベストアンサー1

ワイルドカード拡張によってどれだけの引数が発生したかを計算しましょう。まず、nullglob一致するものがない場合は、ワイルドカード自体の代わりに予想されるゼロを取得するように設定します。

shopt -s nullglob

次に、目的のスキーマの拡張を要求し、それを現在のパラメータに設定します。

set -- /opt/presto-server-*/

後ろにスラッシュが追加されることに注意してください。これを行うには、結果の一致がディレクトリ(またはディレクトリへのシンボリックリンク)である必要があります。

それから何があるか尋ねてください。

[ "$#" -gt 0 ] && echo "There are one or more presto-server- directories"

おすすめ記事