ターミナルのフォルダーにフォルダーを作成する方法


12

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

回答:


12

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

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)を反復処理してから、目的の(相対)サブフォルダを作成します。


1
ああ、美しい、これは歴史に残るだろう;-)
スティーブ

18

この中括弧{curly}をつけたいかもしれません

この議論のために、。/ 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/


5
個人的には、プログラマーとして考える必要がないので、この答えのほうが好きです。中括弧を使用することはめったにありませんが、はるかにエレガントです。
jawtheshark

6
OPは、の各サブディレクトリ自体の内部に4つのサブディレクトリを配置することmusicmkdir希望しているため、正しい引数は./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
–joH1

1
参考までに、-pは短縮形です--parent
アメディーヴァンガッセ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.