私はテンプレートファイルと、ディレクトリINPUT
に階層的にレイアウトされたデータが混在するbashスクリプトを持っています。ディレクトリツリーを構築するためのBashのコマンドラインツール
スクリプトは次のない:
- 階層ファイル出力構造を作成し、
OUTPUT
- 移入は、後処理/フィルタ処理されたデータのファイルツリーと述べました。
- 上記のデータの可視化などのために、いくつかの外部プログラムを実行します。
私は、このスクリプトは、できるだけ移植可能にし、それが簡単に同僚がそれを実行できるようにするためにしたいと、私は外部OUTPUT
フォルダ構造をpremakeしたくない、私はその場でそれを生成したいです。
残念ながら、これは大きなテキストグロブを作成します。ちょうどディレクトリ名は...私の本当のものは実際の意味を持って作られたもの。もちろん、
$!/bin/bash
function MkdirAndAssign() { mkdir -p $1; echo $1; }
baseDir=$(pwd)
outDir=$(MkdirAndAssign ${baseDir}/OUTPUT)
outTop1Dir=$(MkdirAndAssign ${outDir}/TOP1)
outMid1_1Dir=$(MkdirAndAssign ${outTop1Dir}/MID1_1)
outMid1_2Dir=$(MkdirAndAssign ${outTop1Dir}/MID1_2)
outMid1_3Dir=$(MkdirAndAssign ${outTop1Dir}/MID1_3)
outBottom1_3_1Dir=$(MkdirAndAssign ${outMid1_3Dir})
outTop2Dir=$(MkdirAndAssign ${outDir}/TOP2)
outTop3Dir=$(MkdirAndAssign ${outDir}/TOP3)
outMid3_1Dir=$(MkdirAndAssign ${outTop1Dir}/MID3_1)
outMid3_2Dir=$(MkdirAndAssign ${outTop1Dir}/MID3_2)
...しかし、重要なことは、私はこの大きなセットを構築しています:
は、現在、私のようなものを持っていますネストされたディレクトリの
私の質問:
が、これは短く、甘くすることができますシェルコマンドのいくつかの並べ替えはあります?
(私の機能は、基本的にはちょうど私が後で再利用のための1つのコマンドで変数の割り当てを、得ることができるようmkdir -p
をラップします。)
残念ながら、私はなるだろうどこかに隠れて他のツールがあるとは思いませんそれはより簡単です。オンザフライで作成している場合は、生成されたパスコンポーネントを配列(または連想配列)に保持するスキームがあります。この配列をループスキームで使用して、必要なデータを持っている。正直言って、それは多くの利点のようには聞こえませんが、最終的なループのロジックに応じて整理することができます(または悪化させる...)幸運。 –
'mkdir -p $(pwd)/ OUTPUT/TOP1/MID1_ {1,2,3} $(pwd)/ OUTPUT/TOP2 $(pwd)/ OUTPUT/TOP3/MID1_ {1,2} ' – 7171u
ああ、それは賢い/便利な@ 7171uです!あなたはそれを解決することができますか?それは、私が残りの部分を取り組むことができるところまで私を十分に近づけます...あなたに信用を与えることを望みます。 –