web-dev-qa-db-ja.com

ターミナルのフォルダにフォルダを作成するにはどうすればよいですか

musicという名前のフォルダーがあり、その中にすべてのアーティストフォルダーがあります。これらのフォルダを作成する方法はありますか:1. Albums2. EP3. Singles4. Liveコマンドを使用してすべてのアーティストフォルダー内にありますか?

12
user991023

確かに、これはアーティストフォルダーがあるmusicフォルダーで実行します。

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done

これをCLIで実行するか、最初の行に#!/bin/shを追加してファイルに保存することにより、シェルスクリプトにすることができます。ファイルを実行可能にすることを忘れないでください。

それがすることに関しては:それは現在のディレクトリ内のすべてのディレクトリ(*/)を反復処理し、次にこれらの各ディレクトリについて、目的のサブフォルダ(2番目のfor)を反復処理し、次に必要な(相対)サブフォルダー。

12
jawtheshark

あなたはこれのために{中括弧}を置くことを望むかもしれません

この議論のために、。/ musicが存在しないふりをします。

./musicのベースディレクトリで-pコマンドを使用して、必要な場所にサブディレクトリを作成し、中かっこを使用して小さな配列を作成します

コマンド-pは親の略です。覚えやすい場合は、代わりに--parentを使用できます。

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}

これで遊んでみたいなら、例えば

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}

ネストされた式があり、文字列の途中に中かっこを挿入することができ、サブディレクトリがそれに追随できるようにすることもでき、特定の配列のサブディレクトリで特定することができます

そのようなコマンドで独自のテンプレートを作成し、それらに説明を与えることができる場所にファイルを作成することをお勧めします

詳細については、このページにアクセスしてください https://www.linuxjournal.com/content/bash-brace-expansion および https://www.linux.com/tutorials/all-about -curly-braces-bash /

18
Steve