mkdirとtouchを一括で。vimとbashを使い同時に複数のディレクリとファイルを作るコマンド

vim と bash を使い複数のディレクリとファイルを同時に複数作る方法。

ディレクリとファイルのまとまりを複数一括で作りたいときに。

仮に今、animals というディレクトリにいて、配下に以下のようなディレクトリとファイルのセットを複数一気に作りたい。そんなパターンです。

anmals/
  ├ dog/
  │  └index.md
  ├ cat/
  │  └index.md
  ├ bird/
  │  └index.md
  ├ horse/
  │  └index.md
  ├ cow/
  │  └index.md
  └ elephant/
      └index.md

「dog」と「index.md」のセットを作りたいのです。しかもそれと似たような組み合わせを複数一気に作りたいのです。

vimで作るテキスト

vimで以下のようにテキストを作ります。カレントディレクトリ(今いる場所)が animals/であれば、このテキストを作るファイルは名無しの状態でかまいません。一時的にコマンドを書き出すスペースが用意されればそれで良い、という感じです。

mkdir dog && touch dog/index.md
mkdir cat && touch cat/index.md
mkdir bird && touch bird/index.md
mkdir horse && touch horse/index.md
mkdir cow && touch cow/index.md
mkdir elephant && touch elephant/index.md

そしてビジュアルモードで全文を選択したら「!sh」と打つだけ。

このときvim のコマンドラインには、

:'<,'>!sh

と表示されています。後はエンターを押すだけ。さくっと複数のディレクリとファイルのセットが出来上がります。

mkdir で dog ディレクトリを作った後、立て続けに dog/index.md を作るというコマンド。catもbirdも同様に繰り返す、という簡単な話です。

mkdir とディレクトリ名の間に -p をつければ2階層、3階層の場合も対処可。

各階層でそこからさらに複数の子ディレクリを作りたい…となったらそれはまた別な方法が良いと思います。

vimのテキスト編集に慣れていれば楽

この方法は字を打つのがちょっとめんどくさいです。また、連番の場合はもっとスマートなやり方があります。

しかし、このやリ方は複雑なパターンにも柔軟に対処できますし、気楽に編集できるのが嬉しいところだと思います。

vimをうまく使えばこの手のテキスト編集は大した手間ではありません。

マウス操作やショートカットキーを駆使してフォルダやファイルを新規作成するスピードを上げるよりも文字を打つ技術を上げたほうがコスパが良いです。

右クリックして新規ディレクトリ(フォルダ)作成、ディレクトリをクリックしてまた右クリックからの新規ファイル作成~の繰り返し…と作業は単純ですが、微妙にめんどくさいし、1つ1つマウスでやっていたら日が暮れてしまうし、多少ショートカットキーを使ったところで焼け石に水です。

まとめの与太話

もっと複雑な形に対処する方法は調べると出てくるのですがこのようなごくごく単純な方法が意外と見つからず頭を悩ませていました。

今まではbashのことがよくわからず、毎度pythonの再帰的な処理だの何だのを調べながらScriptを書いたりしていました。

数百のディレクリとファイルがドバっと作成されるときは、うっかり何か間違っていやしないかとビクビクしながらキーを打ったものです。

色々と回り道して辿り着いたのは、難しく考えずに vim と bash をそれぞれ分けて考えるという素朴な回答でした。

なんでも一発でやろうとせずにちょっとだけ分けるのは良い作戦だと思います