macOSでテキスト(ファイル)から(大量の)フォルダーを作成する
新しいプロジェクトがスタート時に「まず、これらのフォルダーを作成」からスタートするときなど、command+shift+Nキーでちまちまフォルダーを作成するのは面倒です。
macOSでテキスト(ファイル)から(大量の)フォルダーを作成する方法について調べてみました(勉強中)。なお、ターミナル.appを使います。
基本
フォルダーを作成したいディレクトリに移動する
cd
(cdに続けてスペース)と入力して、作成したいフォルダーをドラッグします。
フォルダーのディレクトリが入力されます。
cdはchange directoryの略。
フォルダーを作成する
mkdir logo
のように入力してenterキーを押すと、「logo」フォルダーが作成されます。
mkdirはmake directoryの略。
Alfredを使う
「>」から入力すれば、直接Alfred上で実行できる。作成先が「~/」(ユーザー直下)でよければ早い。
応用
1語のフォルダー名
mkdir logo Links backup backup-INDD
を実行すると、次のフォルダーが作成されます。
- 「logo」
- 「Links」
- 「backup」
- 「backup-INDD」
ひとつの単語の場合には、スペースで区切るだけでOKです。
2語以上から構成される場合
mkdir "My Folder" "My Other Folder" "Not That Folder" misc
を実行すると、次のフォルダーが作成されます。
- 「My Folder」
- 「My Other Folder」
- 「Not That Folder」
- 「misc」
2語以上から構成される場合には、""で囲みます。1語が混ざっている場合、それには不要です。
フォルダー名に同じ文字列がある場合
mkdir "Project "{A,B,C,D,E,F}
を実行すると、次のフォルダーが作成されます。
- 「Project A」
- 「Project B」
- 「Project C」
- 「Project D」
- 「Project E」
- 「Project F」
{}がついていると、それを連結しながら作成します。
mkdir "Project "{"New Home","Vacation","To Do"}
を実行すると、次のフォルダーが作成されます。
- 「Project New Home」
- 「Project To Do」
- 「Project Vacation」
{}内でも""が使えます。
テキストファイルから作成する
まず、文字コードはUTF-8、改行コードはLFで「dirlist.txt」というテキストファイルを作成します。
cat dirlist.txt | xargs mkdir
を実行すると、次のフォルダーが作成されます。
- 「vol01」
- 「vol02」
- 「vol03」
- 「vol04」
- 「vol05」
- 「vol06」
- 「vol07」
- 「vol08」
- 「vol09」
- 「vol10」
- 「vol11」
- 「vol12」
- 「vol13」
- 「vol14」
- 「vol15」
- 「vol16」
- 「vol17」
- 「vol18」
ファイル名「dirlist.txt」は変更できます。
catはcatalog? xargsのargはargumentsの略でファイル名の一覧から引数として渡すコマンド。
ものかのさんからコメントいただきました。感謝。
(catはcatenateの略ですー https://t.co/SAvJCWivGZ)
— ものかの (@monokano) 2017年8月15日
@mori_taksiさんからもコメントいただきました。Excelのconcatenate関数と同じなんですね!ありがとうございます。
Oxford Dictionary of Englishによるとcatenateは「まれな動詞」らしく、catについてはそのman pageに「cat -- concatenate and print files」とあるように、concatenateの略と見るほうがいいかも。
— 森 卓司@窮狸校正所 (@mori_taksi) 2017年8月15日
Excelを使う
mkdir "My Folder" "My Other Folder" "Not That Folder" misc
の代わりに、次のように記述してもOK。
mkdir "My Folder"
mkdir "My Other Folder"
mkdir "Not That Folder"
mkdir misc
これらの文字列を作成するために、Excelを利用する。
&で連結する
A列にmkdir、B列にフォルダーを入力し、C列に=A1&" """&B1&""""
のように入力して計算させることができます。
CONCATENATE関数で連結する
CONCATENATE関数を使って、=CONCATENATE($A$1," """,B1,"""")
のように入力するのもOK。A1は絶対参照にするのがスマート。
"をテキストとして扱いたい場合には、""""と4つ入力する。
3つでよさそうなんだけど、Excel 2016 for Macでは、エラーが出ます。
連結しないで、後でガンバル
関数が面倒い場合には、こんな感じに入力して、テキストエディタにペーストしてtabコードを抜けばOK。
末尾の「;」はあってもなくてもいいけど、1行にまとめてしまうときに便利。
参考(リンク集)
- Easily create lots of new folders | Macworld
- Create multiple folders from Terminal - Mac OS X Hints
- Create hudreds of folders named after a list.txt - Script or Automator or ? | MacRumors Forums
@CLCLCLさん、コメントありがとうございました。
経験上Excelで開きA列`mkdir "`C列`"`で下方向コピー→全選択コピー、プレーンテキストエディタにペーストしてタブ文字を全置換で消して、Terminal\.appなりpowershell\.exeなりの黒画面にペースト、が脳みそあんまり使わずにできるのでオヌヌメ
— CL (@CLCLCL) 2017年8月14日
追記(2017年8月18日):
@t_fukuiさんからコメントいただきました。なんと、これ(Client Folder Maker)、ファイルも作れちゃう!「これができたら!」と、ずっと思っていました。ありがとうございます!
作るフォルダ構成が決まっているなら、プリセットできる Client Folder Maker が便利です(今なら無料)。サブフォルダ含めて一気にできて、作成時に最上位のフォルダ名の入力を求める任意の変数(手入力ですが)も使えます。https://t.co/Ugk8vJ4Swr https://t.co/vfwpzGl4Tu
— Takeshi Fukui (@t_fukui) 2017年8月18日