次のディレクトリが現在のディレクトリ内にあるディレクトリツリーをAからZに作成しようとしています。
たとえば、BはA内にあり、CはB内にあります。
-A
--B
---C
----...Z
自動化された方法でそれを達成する方法についての手がかりはありますか?
次のディレクトリが現在のディレクトリ内にあるディレクトリツリーをAからZに作成しようとしています。
たとえば、BはA内にあり、CはB内にあります。
-A
--B
---C
----...Z
自動化された方法でそれを達成する方法についての手がかりはありますか?
回答:
そしてbashののブレース展開:mkdir
printf
$ mkdir -p "$(printf "%s/" {A..Z})"
$ tree A
A
└── B
└── C
└── D
└── E
└── F
└── G
└── H
└── I
└── J
└── K
└── L
└── M
└── N
└── O
└── P
└── Q
└── R
└── S
└── T
└── U
└── V
└── W
└── X
└── Y
└── Z
25 directories, 0 files
{A..Z}
に拡大しA B ... Z
、printf "%s/"
引数の/
後にa を付けて出力するので、A/B/...Z/
mkdir -p
作成A/B/.../Z
作成に必要なすべての親ディレクトリのディレクトリを。-p
にはaがありmkdir
ます。
非常に単純なレベルでは、{A..Z}
展開を使用してすべての文字を生成し、各文字を繰り返し作成して入力できます。
~/test_directory$ for d in {A..Z}; do mkdir "$d"; cd "$d"; done
~/test_directory/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z$
プロンプト出力でわかるように、ディレクトリが完全にチェーンされました。
ただし、実際のディレクトリ名がアルファベットと異なる場合は、何らかの方法でファイルを介してディレクトリ名のリストを提供する必要があります。基本的に、これ
while IFS= read -r dir_name;do mkdir "$dir_name"; cd "$dir_name" ;done < directory_list.txt
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
、それを修正する方法はわかりませんtree
が、これは問題ではなく、むしろシェルのソート順でさえあると思います。unix.stackexchange.com
にもかかわらずmuruのprintf
方法は、私個人的には同様のビートすることはできませんjot
この種のもののために。jot
Ubuntuにはデフォルトではインストールされません。athena-jot
パッケージには、それを提供します。これらのコマンドのいずれかが機能します。
mkdir -p "$(jot -s/ -c 26 A)"
jot -s/ -c 26 A | xargs mkdir -p
文字のシーケンスを生成し、スラッシュで結合するコマンドmkdir -p
は、コマンドの置換(muruのanswerのように)またはを使用して渡すことができるため、実際にこれが容易になりますxargs
。以下に、いくつかのツールを使用した例をxargs
示します。ソフトウェアをインストールする必要はありませんが、非常に最小限のシステムまたはUbuntu Coreを除きます。
perl -we 'print join "/", A..Z' | xargs mkdir -p
ruby -we 'print (?A..?Z).to_a * ?/' | xargs mkdir -p
python3 -c 'print("/".join(__import__("string").ascii_uppercase))' | xargs mkdir -p
古いUbuntuリリースには、Python 3ではなくPython 2が付属しています。そのため、Pythonで本当にこれを行うには、最後のコマンドが機能するように変更python3
しpython
てください。
同様に、muruの短く簡単な方法は、代わりに書くことができます:
printf '%s/' {A..Z} | xargs mkdir -p
/
ディレクトリパス内の末尾のmkdir -p
を作成するように求められますが、問題はなく、おそらくスタイル的に好ましいです。ただし、この回答の他の例と同様に、省略しても構いません。