次の形式のディレクトリがあります。
/folder1/folder2/name_X_Y_Z_A
ここではX
、数字、、、Y
はZ
3A
つまたは4つの文字列です。
次のようにシェルスクリプトファイルを作成したいと思います。
- フォルダ名から
X
合計を抽出します。Z
- 文字列の生成
/folder1/folder2/name_(X-1)_Y_Z_A
string_Z.dat
このディレクトリからファイルをコピーする
ここから特定のパターンを抽出する方法がわかりません$PWD
。数字の長さと長さが異なる可能性があるため、X
およびの文字位置は同じである必要はありません。Z
name
ベストアンサー1
まず、シェルのパラメータ置換構文を使用して先行パスコンポーネントを切り取ってから、${PWD##*/}
下線をフィールド区切り文字として使用して、デフォルト名を配列として読み取ることができます。
IFS=_ read -a arr <<< "${PWD##*/}"
bash配列はインデックスが0なので、必要な部分を配置する必要があります${arr[1]}
。${arr[3]}
newdir="/folder1/folder2/name_$((${arr[1]}-1))_${arr[3]}_Z_A"
(X-1)
[注:リテラル文字列ではなく算術結果を意味すると仮定します。 ]