
presto は分散 SQL クエリエンジンです。
prestoをインストールすると、次のようなメインフォルダが作成されます。
/application/DB/presto/presto-server-0.216
だから私たちは言うことができます
家に帰るときのスリルを捉えるために、私たちは次のようにすることができます。私のbashスクリプトの一部です)
PRESTO_HOME=` find /application/DB/presto/ -maxdepth 1 | grep presto-server `
echo $PRESTO_HOME
/application/DB/presto//presto-server-0.216
しかし...一部のユーザーは下のフォルダの名前を変更できるため/アプリケーション/DB/presto/新しいバージョンをインストールするには
それから/application/DB/presto、次のフォルダを取得できます。
/application/DB/presto/presto-server-HOLD_0.211
/application/DB/presto/_presto-server-0.212
/application/DB/presto/backup_presto-server-0.216.new
/application/DB/presto/presto-server-0.210.old
/application/DB/presto/presto-server-0.212.orig
だからこれについて
実際のパスを見つけるための正しい構文は何ですか?
/application/DB/presto/presto-server-0.216
メモ:
presto フォルダ構造は常に
presto-server-[浮動小数点数または整数]
有効な例:
/application/DB/presto/presto-server-0.736
/application/DB/presto/presto-server-0.936
/application/DB/presto/presto-server-1
/application/DB/presto/presto-server-1.9
/application/DB/presto/presto-server-12
誤った例:
/application/DB/presto/presto-server-0.736-43.previos
/application/DB/presto/presto-server-0.936_old
/application/DB/presto/orig_presto-server-1
/application/DB/presto/presto-server-1.9.bck
/application/DB/presto/presto-server-PREVIOS
/application/DB/presto/presto-server-
/application/DB/presto/presto-server-0.936_old
/application/DB/presto/orig_presto-server-1.other
/application/DB/presto/presto_server-1.9.bck
/application/DB/presto/OLD_presto-server-12-83
答え1
使用しているシェルに応じて、ワイルドカードでこれを行うことができます。
強く打つ
#! /bin/bash -
shopt -s nullglob extglob
dirs=(/application/DB/presto/presto-server-+([[:digit:]])*(.+([[:digit:]])))
printf '%s\n' "Found ${#dirs[@]} matching directories:" "${dirs[@]}"
扱いにくい
#! /bin/zsh -
set -o extendedglob
dirs=(/application/DB/presto/presto-server-<->(.<->)#(N))
printf '%s\n' "Found $#dirs matching directories:" $dirs
クッシュ 93
#! /bin/ksh93 -
dirs=(~(N)/application/DB/presto/presto-server-+([[:digit:]])*(.+([[:digit:]])))
printf '%s\n' "Found ${#dirs[@]} matching directories:" "${dirs[@]}"
すべての数字にはpresto-server-
1つ以上の数字シーケンスがあり、その後に0つ以上の数字シーケンスがあります.<digits>
。
答え2
GNU findでテストすると、-regex
次のことができます。
find /application/DB/presto/ -regex '/application/DB/presto/presto-server-\([0-9]*\.\)?[0-9]+'
...先行パスと数字の部分が必要です。
- オプション:先行番号とピリオド
- 1つ以上の数字
これはすべての「有効な」例にのみ一致し、「無効な」例には一致しません。
前のピリオドの前に数字が必要な場合は、次のように違いを変更し[0-9]*
ます[0-9]+
。
/application/DB/presto/presto-server-0.936
そして
/application/DB/presto/presto-server-.936