(追加の実装のために) yamlディレクトリ構造をフルパスに変換するためにshell / bashにスクリプトを書いてみましたmkdir -p
。 Yamlは人が編集できるので、私が選んだものです。構造例は次のとおりです。
- Downloads
- Music
- Movies
- University
- First year
- English
- Maths
- Second year
realpath .
したがって、最初のレベルを現在のディレクトリ(たとえば)に置き換え、2番目のレベルを/home/maeda/Downloads
親ディレクトリのフルパス(たとえば)に置き換えたいと思います。/home/maeda/Downloads/Music
だから私は次のような結果を得たいと思います。
/home/maeda/Downloads
/home/maeda/Downloads/Music
/home/maeda/Downloads/Movies
/home/maeda/University
/home/maeda/University/First year
/home/maeda/University/First year/English
/home/maeda/University/First year/Maths
/home/maeda/University/Second year
達成する方法?
答え1
YAMLファイルが有効であるとします。
Downloads:
Music:
Movies:
University:
First year:
English:
Maths:
Second year:
使用できる
yq -r --arg prefix "$(realpath .)" 'paths | [ $prefix, .[] ] | join("/")' file.yaml
yq
それはどこから出たhttps://kislyuk.github.io/yq/
これは、jq
文書から「パス」を取得するために式を使用します。このコンテキストでは、「パス」は文書自体の特定の項目を表しているため、配列パスはFirst year
配列[ 'University', 'First year' ]
(JSON表記を使用して作成されます)です。
/
これらのパスの配列は区切り文字を使用して接続できますjoin("/")
。
realpath .
また、intoの出力をyq
内部変数の値として渡します$prefix
。この値は、に渡される前に各パス配列の前に追加されますjoin("/")
。つまり、コマンドによって出力されるパス名の前に追加されますyq
。