中括弧(中括弧)を使用して、 `mkdir -p`でフォルダー構造を作成します


16

man mkdir状態として

   -p, --parents
          no error if existing, make parent directories as needed

このコマンドを実行したとき

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

それは、このようなフォルダ構造を作成work後、親フォルダF1F2F3子フォルダとtemp1temp23つの親フォルダの下に子フォルダをF1F2F3

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

今の問題は、私が作成したいということですtemp1temp2フォルダだけ下F1の下でないF2F3、私は、私は私が欲しいものを行うには、コマンドを書くことができますどのように混乱しています。


@カレブ:申し訳ありませんが、私たちは両方の編集を同時に行っていることに気づいていませんでした。SEではリビジョンのマージが実装されていないようです:-/
StéphaneGimenez

@Stephane:心配ありません。私は多くの編集を行いましたが、2つの主要な編集がそのように上書きされることは非常にまれです。貢献してくれてありがとう!
カレブ

回答:


25

たぶんこれはあなたが探しているものですか?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}

ねえ、私は最近、物事がそれほど簡単にできるかどうか疑問に思っていました。ありがとう!
rozcietrzewiacz

2

ブレース展開の非常に良い説明(例付き)はBrace Expansion、bashマニュアルのサブセクションにあります(man bash、を押し/て検索を開始し、検索しますBrace Expansion)。


ありがとう、あなたの答えは私をこの素晴らしいガイドに導いた!それが「ブレース拡張」と呼ばれることを知る必要があったので、私はグーグルにすべきことを知っていました。linuxcommand.org/lc3_lts0080.php抜粋:「おそらく最も奇妙な展開はブレース展開と呼ばれます。これを使用すると、ブレースを含むパターンから複数のテキスト文字列を作成できます。例を次に示します。 [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back
Rock Lee

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

これworkは、の下位レベルのディレクトリを作成する前に、まず3つのサブディレクトリを作成しますwork/F1。読みやすく、理解しやすいです。

または、すべてを単一のモンスター表現に絶対に結合する必要がある場合(読む必要も維持するのも難しいため、絶対に行う必要はありません):

mkdir -p work/F{1/temp{1,2},2,3}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.