mkdir -p
というかなり冗長な一連のネストされたディレクトリを作成し、-p
フラグを適用してディレクトリが既に存在するという警告を抑制できることはわかっています。コンパクトな文字列表現から階層的なディレクトリツリーを作成する
mkdir -p hello
mkdir -p hello/i_am_a
mkdir -p hello/i_am_a/boy
mkdir -p hello/i_am_a/girl
mkdir -p hello/i_am_a/alien
mkdir -p hello/i_am_a/dog
mkdir -p hello/my_name_is
mkdir -p hello/my_name_is/jim
mkdir -p hello/my_name_is/bob
mkdir -p hello/my_name_is/secret
私が代わりにリスト開放文字(すなわち{
)からなる、ネストされたパターンを持つ単一の呼び出しでツリーまたはそれの少なくとも一部を構築したいと思います:これは、個々のコール、すなわちで非常に冗長取得します、リスト区切り文字(すなわち、,
)、およびリストを閉じる文字(すなわち、}
)。
トップから始まる各レベルについて、その名前のディレクトリがまだ存在しない場合は作成されます。
は、私は入力文字列を使用することになり、本当の言葉で、上記の私の愚かな例を続行するには:「ハロー{i_am_a {男の子、女の子、外国人、犬}、my_name_is {ジム、ボブ、秘密}} 'は、以下を作成する必要があり
を... ...便宜上
hello
hello/i_am_a
hello/i_am_a/boy
hello/i_am_a/girl
hello/i_am_a/alien
hello/i_am_a/dog
hello/my_name_is
hello/my_name_is/jim
hello/my_name_is/bob
hello/my_name_is/secret
、のは、それに影響ソリューションの長さがあれば、我々はよりも多くはありませんと仮定できるとしましょうの結果のツリー内のネスティングのレイヤー(例:例えば上記の例ではn=3
)。
彼らは結果のファイルパスに表示されることはありませんつまり、ネストされた文字列で発生することはありません私たちは、さらに利便性のために想定する3つの特殊な構造の文字こと(例えば{
ため、上記の例では、,
、および}
)してみましょう。
Perl
またはPython
埋め込みスクリプトはこのトリックを行う可能性がありますが、組み込みのBASH
機能を使用すると簡単な解決策があると思われますか?
私の目標は、データの後処理スクリプトの冗長さを削減する簡潔なソリューションです。階層型のディレクトリツリーの作成には、再利用のために保存した中間層とツリーの上部に向かってディレクトリを作成します。
このタイプの「自分のコードを書いてください」というリクエストは、StackOverflowにとって完全にオフトピックです。 [ask]を確認し、[help]にアクセスしてください。 –
非常に具体的な1ライナーを求める多くの高評価の質問があります。 このケースでは、メソッドがあいまいである小さな非常に具体的なアクションを実装する方法を単に質問しています。これは、「この正規表現をどのように動作させるか」という質問とはまったく変わりません。 私は簡潔に/うまく作られたone-linersを勧誘することは、控えめにしたら "自分のコードを書いてください"と考えています。 –
F. Hauriの解決策を見てください!すべてのあなたの好意のために、これを達成するための簡単な答えがありました!ところで、これは類似しているがやや異なる質問だったし、コミュニティはそれが受け入れられることを明らかに認めた:http://stackoverflow.com/questions/2445213/building-a-directory-tree-from-a-list-of-file-pathsあなたが特定の質問に対して特定の解決策を持っていないからといって、目的が限定され明確に定義されていれば、投稿した人を攻撃すべきではありません。もう一度、あなたの標準を適用する場合、おそらく2以上のスクリプト関連の質問の50%が消えてしまうでしょう。 –