ディレクトリを1つずつ mkdir して回るのは卒業しましょう。階層はまとめて掘り、同じ階層の複数フォルダは一気に作り、日付フォルダは自動生成する——現場で毎日使う「まとめて作る」ワザを、コピペで動く形で集めました。mkdir 単体ではなく、シェルの機能と組み合わせるのがコツです。
まず結論:まとめて作る3パターン
mkdir -p a/b/c # ① 階層をまとめて掘る
mkdir -p project/{src,test,docs} # ② 同階層に複数を一気に
mkdir -p logs/$(date +%Y/%m/%d) # ③ 日付フォルダを自動生成
この3つを組み合わせれば、たいていの「まとめて作りたい」は片付きます。以下、それぞれの理由と落とし穴を見ていきます。
① 階層をまとめて掘る(-p)
途中の親ディレクトリが無いと、素の mkdir はこう失敗します。
$ mkdir a/b/c
mkdir: ディレクトリ 'a/b/c' を作成できません: そのようなファイルやディレクトリはありません
$ mkdir -p a/b/c # -p を付ければ親ごと一気に作る
-p の隠れた利点は、すでに存在してもエラーにならない(冪等)こと。だからシェルスクリプトの中で「あれば使う、無ければ作る」を if 文なしで書けます。セットアップスクリプトで重宝します。
② 同じ階層に複数を一気に(ブレース展開 {a,b,c})
# src / test / docs をまとめて作成
mkdir -p project/{src,test,docs}
# 連番も作れる(01〜12の月フォルダ)
mkdir -p 2026/{01..12}
# 掛け算のように展開(年×月=24フォルダ)
mkdir -p archive/{2025,2026}/{01..12}
{a,b,c} や {01..12} は「ブレース展開」と呼ばれるシェル側の機能で、mkdir に渡る前に複数の引数へ展開されます。だから mkdir 以外のコマンドでも同じ書き方が使えます。ただしこれは bash / zsh の機能なので、sh(dash)で実行するスクリプトでは展開されず、{01..12} という名前のフォルダが1個できてしまいます。スクリプト冒頭の #!/bin/bash を確認しておきましょう。
もう一つの定番の落とし穴がカンマ後のスペース。{src, test} と書くと「src」と「 test」(頭に空白付き)という意図しない名前になります。ブレース展開の中では空白を入れないのが鉄則です。
③ 日付ディレクトリを自動生成する
# 今日の日付で backup/2026/07/07 を自動作成
mkdir -p ~/backup/$(date +%Y/%m/%d)
# そのままバックアップを置くワンライナー
DEST=~/backup/$(date +%Y/%m/%d)
mkdir -p "$DEST" && cp -a /etc/nginx "$DEST"/
$(date +%Y/%m/%d) がその日の 2026/07/07 に置き換わり、-p が年・月・日のフォルダをまとめて掘ります。cron で日次バックアップを回すときの定番で、日付ごとに整理された保管先が勝手に育っていきます。変数を "$DEST" とダブルクオートで囲むのは、パスに空白が混じっても壊れないようにするためです。
応用:プロジェクトの雛形を一発で作る
# 入れ子のブレース展開で構造ごと生成
mkdir -p myapp/{src/{main,test},docs,config}
# tree で出来上がりを確認(未導入なら sudo apt install tree)
tree myapp
ブレース展開は入れ子にできるので、src の下に main と test、同階層に docs と config——といった構造を1行で組めます。新規プロジェクトの初期化スクリプトに仕込んでおくと、毎回の手作業がゼロになります。
パーミッションを指定して作る(-m)
# 作成と同時にパーミッションを 700 に
mkdir -m 700 ~/.secret
作った後に chmod し直す2手間を、-m で1手にまとめられます。鍵ファイルや認証情報を置くフォルダを、最初から他ユーザーに見せない状態で用意したいときに便利です。
作ってすぐ中へ移動する(mkcd の小技)
「作ったら結局その中に cd する」という動作は、シェル関数にまとめておくと毎回2手が1手になります。~/.bashrc に次を追記して読み込み直すだけです。
# ~/.bashrc に追記
mkcd() { mkdir -p "$1" && cd "$1"; }
# 反映(または端末を開き直す)
source ~/.bashrc
# 使い方:作成と同時にそのディレクトリへ入る
mkcd work/2026/report
mkdir -p で掘ったあと && で成功時だけ cd する、という組み合わせを関数化しただけですが、日々の作業回数を考えると効果は侮れません。引数を "$1" と囲んでおけば、空白入りのパスでも安全に動きます。
まとめ
「まとめて作る」の三種の神器は -p(階層)・ブレース展開 {a,b,c}(一括)・$(date …)(日付自動生成)。さらに入れ子ブレースで雛形生成、-m でパーミッション同時指定まで押さえれば、ディレクトリ作りで手を止めることはなくなります。sh ではブレース展開が効かない点だけ忘れずに。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。

コメント