【2026年7月最新】Linuxコマンド「mkdir」完全ガイド|ディレクトリ作成・-pオプション・パーミッション・業務活用まで徹底解説

【2026年7月最新】Linuxコマンド「mkdir」完全ガイド|ディレクトリ作成・-pオプション・パーミッション・業務活用まで徹底解説

「Linuxでフォルダを作りたいが、コマンドの正しい書き方が分からない」「-pオプションと-mオプションの違いが混乱する」——こういった疑問をお持ちの方に向けて、この記事では Linuxの「mkdir」コマンドを完全解説します。

mkdirは Make Directory(ディレクトリを作る) の略で、Linuxの最も基本的なコマンドの一つです。シンプルなコマンドですが、-p(親ディレクトリを同時作成)・-m(パーミッション指定)・ブレース展開との組み合わせなど、知っておくべきテクニックが多くあります。特にAIプロジェクトや自動化スクリプトでサーバー環境を素早く構築したい場合に、このコマンドの使いこなしが作業効率を大きく変えます。

この記事では、基本的な使い方から全オプション・ブレース展開・シェルスクリプトでの活用・よくあるエラーの対処法まで、一記事で完全にマスターできるよう解説します。後半では、Claude Codeを使ってディレクトリ構成の作成を自動化する方法もご紹介します。

代表菅澤 代表菅澤
弊社GENAIではAI自動化システムのサーバー環境を頻繁にセットアップします。mkdirコマンドをシェルスクリプトに組み込んで、プロジェクトフォルダ構成を一発で作れるようにしているので、新しいプロジェクトを始めるたびに1〜2時間かかっていた環境構築が5分で終わるようになりました。
AI鬼管理山崎 AI鬼管理山崎
この記事はLinuxを使い始めた方から、シェルスクリプトでmkdirを活用したい中級者まで、幅広く参考になる内容です。ぜひ最後まで読んでmkdirをマスターしてください。

この記事を読むと、次のことが分かります。

✔️mkdirコマンドの基本構文と主要オプションをすべて理解できる
✔️-pオプションで深い階層のディレクトリを一発作成できる
✔️-mオプションでパーミッションを指定してセキュアなディレクトリを作れる
✔️ブレース展開を使って複数のディレクトリを一度に作成できる
✔️シェルスクリプトに組み込んで環境構築を自動化できる
✔️よくあるエラーの原因と対処法を知っておける
✔️Claude Codeに指示してディレクトリ構成全体を自動作成させられる
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】Linuxコマンド「mkdir」完全ガイド|ディレクトリ作成・-pオプション・パーミッション・業務活用まで徹底解説
Linuxの「mkdir」コマンドの使い方を完全解説。基本構文から-p(親ディレクトリ同時作成)・-m(パーミッション)・ブレース展開・シェルスクリプト活用まで網羅。AIプロジェクトのディレクトリ構成もClaude Codeで自動化する方法も紹介します。

01 mkdirコマンドとは――ディレクトリ作成の基礎知識 Make Directoryの概念とファイルシステムにおける役割を整理する

mkdirコマンドは 「Make Directory(ディレクトリを作成する)」 の略です。LinuxやmacOS(Unix系OS)に標準搭載されており、ターミナル(コマンドライン)からディレクトリ(Windowsで言う「フォルダ」)を作成するときに使います。1970年代のUNIXから存在する、ファイル操作の最も基本的なコマンドの一つです。

📚 用語解説

ディレクトリ:Linuxにおけるフォルダのこと。ファイルシステム上でファイルを整理・分類するための「入れ物」。Windowsの「フォルダ」とほぼ同じ概念ですが、LinuxではWindowsより厳格な階層構造で管理されています。

1-1. ディレクトリとファイルの違い

ディレクトリとファイルはどちらもファイルシステムの「ノード」ですが、役割がまったく異なります。ファイルはデータを格納する最小単位(テキスト、画像、プログラムなど)で、ディレクトリはファイルや他のディレクトリを格納する「容器」です。mkdirはこの「容器(ディレクトリ)」を作成するコマンドで、ファイルを作成する `touch` コマンドとは対になる存在です。

コマンド作成するもの主な用途
mkdirディレクトリ(フォルダ)ファイルを整理するための容器を作る
touch空のファイルテキスト・設定ファイルの雛形を作る
cp -rディレクトリのコピー既存のディレクトリ構造を複製する
mvディレクトリの移動・リネーム既存のディレクトリを移動または名前変更する
rmdir / rm -rディレクトリの削除空のディレクトリ(または中身ごと)を削除する

1-2. mkdirが必要になる典型シナリオ

日常のLinux作業でmkdirを使う場面は多岐にわたります。開発者であれば新しいプロジェクトのフォルダ構成を整備するとき、サーバー管理者であれば各アプリケーションのログやデータ保存先を作成するとき、AIエンジニアであればデータセット・モデル・ログ・設定ファイルを分類するフォルダを一括構築するときに必須です。

✔️新規プロジェクト開始時:src・docs・tests・logs などのディレクトリ構成を作る
✔️Webサーバー設定:バーチャルホストごとのドキュメントルートディレクトリを作る
✔️AIプロジェクト:datasets・models・checkpoints・logs などを整理するフォルダを作る
✔️バックアップ管理:日付別・月別のバックアップ保存ディレクトリを作る
✔️CI/CDパイプライン:自動ビルド時に成果物を置くための一時ディレクトリを作る
✔️Dockerコンテナ:Dockerfileの中でコンテナ内のディレクトリを作る

📚 用語解説

ファイルシステム:OS(オペレーティングシステム)がディスク上のデータを管理するための仕組み。ディレクトリとファイルを階層構造(ツリー構造)で管理し、それぞれにパーミッション(読み書き実行の権限)を設定できます。Linuxで一般的なのはext4やxfsといったファイルシステムです。

1-3. Windowsとの概念比較

Windowsを主に使ってきた方にとって、Linuxのディレクトリは「フォルダ」と思って問題ありません。ただし、いくつかの重要な違いがあります。特にパスの書き方(バックスラッシュかスラッシュか)と、大文字・小文字の区別(Linuxは区別あり、Windowsは区別なし)は混乱しやすいポイントです。

項目LinuxWindows
呼称ディレクトリ(Directory)フォルダ(Folder)
パス区切りスラッシュ /(例: /home/user/docs)バックスラッシュ \(例: C:\Users\user\docs)
大文字小文字区別あり(Documents と documents は別物)区別なし
ルートディレクトリ/ (スラッシュ1つ)C:\ など ドライブレター付き
隠しファイル・ディレクトリ名前が . から始まるもの(例: .git)属性フラグで設定
AI鬼管理山崎 AI鬼管理山崎
LinuxとWindowsで混乱する最大のポイントは「パスのスラッシュの向き」と「大文字小文字の区別」です。Linuxで「Documents」を作ったつもりが「documents」と小文字で入力してしまい、別のディレクトリが作成されるというミスはよくあります。注意してください。

02 mkdirコマンドの基本構文と使い方 ゼロから始めてすぐ使えるようになる最小限の知識

まず、mkdirコマンドの基本的な使い方を押さえましょう。構文はシンプルで、コマンド名の後にスペースを空けてディレクトリ名を入力するだけです。

2-1. 基本構文

mkdir [オプション] ディレクトリ名 [ディレクトリ名2 ...]

最も基本的な使い方は、1つのディレクトリ名を指定するだけです。実行するとカレントディレクトリ(現在いるディレクトリ)の中に新しいディレクトリが作成されます。

# カレントディレクトリに「myproject」というディレクトリを作成
$ mkdir myproject

# 作成されたか確認する
$ ls -la
drwxr-xr-x 2 user user 4096 Jul 18 10:00 myproject

# 絶対パスを指定してどこにでも作れる
$ mkdir /home/user/workspace/myproject

2-2. 複数のディレクトリを同時に作成する

mkdirは一度のコマンドで複数のディレクトリを同時に作成できます。スペースで区切って並べるだけです。いちいち1つずつ実行する必要がなく、プロジェクトの初期フォルダ構成を一発で整備できます。

# 複数のディレクトリを一度に作成
$ mkdir src docs tests logs

# 作成されたか確認
$ ls
docs  logs  src  tests

# パス指定でも複数同時作成できる
$ mkdir /home/user/project/src /home/user/project/docs /home/user/project/tests
💡 ディレクトリ名にスペースは禁止

Linuxでは半角スペースはコマンドの区切り文字として解釈されるため、ディレクトリ名に半角スペースを含めると意図しない動作になります。スペースを含めたい場合は「"」(ダブルクォート)で囲むか、スペースの代わりに「-」(ハイフン)か「_」(アンダースコア)を使いましょう。例: mkdir "my project" または mkdir my-project

2-3. 作成したディレクトリへ移動する

ディレクトリを作成したら、次に `cd` コマンドでそのディレクトリに移動するのが典型的な流れです。`mkdir` と `cd` を1行にまとめることもできます。

# ディレクトリを作って、そのまま移動する(2コマンド)
$ mkdir myproject
$ cd myproject

# 1行で書く場合(&& でつなぐ)
$ mkdir myproject && cd myproject

# 作成と移動を1行で書く便利な構文(bash 専用)
$ mkdir -p myproject && cd "$_"
# "$_" は直前のコマンドの最後の引数を参照する変数
代表菅澤 代表菅澤
「mkdir して cd する」というパターンはほぼ毎日使うので、シェルの設定ファイルに「mkcd」という関数として登録しておくと便利です。mkcd() でmkdir -p して cd する1ステップで済むようになります。

03 mkdirの全オプション一覧と実践的な使い方 主要3オプションを実例付きで完全解説

mkdirのオプションはduコマンドなどと比べて少なく、覚えるべきものは3〜4個に絞られます。しかし、この少ないオプションの中に、実務で絶対に必要になる重要なものが含まれています。全体像を表で確認してから、各オプションを詳しく見ていきましょう。

オプション長いオプション名機能重要度
-p--parents中間ディレクトリを含めて作成。既存でもエラーにならない★★★ 必須
-m--mode=MODEパーミッション(権限)を指定して作成★★★ 必須
-v--verbose作成されたディレクトリを出力(確認用)★★ 推奨
-Z(SELinux)SELinuxセキュリティコンテキストをデフォルトに設定★ 上級者向け
--helpヘルプを表示-
--versionバージョン情報を表示-

3-1. -vオプション:作成ディレクトリを表示する

-v(--verbose)オプションを付けると、作成されたディレクトリ名が標準出力に表示されます。特に複数ディレクトリを一括作成するときや、-pで深い階層を作成するときに「本当に作られたか」をその場で確認できて便利です。

# -v で作成確認
$ mkdir -v project
mkdir: created directory 'project'

# 複数 + -v で全部確認
$ mkdir -v src docs tests logs
mkdir: created directory 'src'
mkdir: created directory 'docs'
mkdir: created directory 'tests'
mkdir: created directory 'logs'

# -p -v の組み合わせで中間ディレクトリも確認
$ mkdir -pv project/backend/api
mkdir: created directory 'project'
mkdir: created directory 'project/backend'
mkdir: created directory 'project/backend/api' 

📚 用語解説

-v / --verbose オプション:コマンドの動作を詳細に出力するフラグ。mkdir以外にも多くのコマンド(cp, mv, rm など)に共通して存在します。スクリプトのデバッグ時や、大量ファイルの処理を確認したいときに役立ちます。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 -pオプション詳解――親ディレクトリを同時作成する 最も実用的なオプション -p の動作原理と使いどころを完全網羅

-p(--parents)オプションは、mkdirの中で最もよく使われる重要なオプションです。「途中の親ディレクトリが存在しない場合でも、必要な全ての中間ディレクトリを自動的に作成する」という機能で、これを知らないと深い階層のディレクトリを作る際に何度もmkdirを繰り返さなければなりません。

4-1. -pなしの場合の問題

まず、-pオプションなしで深いパスを指定するとどうなるかを確認しましょう。親ディレクトリが存在しない場合、エラーになってしまいます。

# -p なし: 親ディレクトリが存在しないとエラーになる
$ mkdir project/backend/api/v1
mkdir: cannot create directory 'project/backend/api/v1': No such file or directory

# この場合、ディレクトリを1つずつ作らないといけない(面倒)
$ mkdir project
$ mkdir project/backend
$ mkdir project/backend/api
$ mkdir project/backend/api/v1

# -p オプションがあれば1コマンドで解決
$ mkdir -p project/backend/api/v1

4-2. -pの基本的な使い方

-p オプションは「parents(親)」の略で、指定したパスに必要な全ての中間ディレクトリを自動作成します。さらに重要な特性として、途中のディレクトリが既に存在してもエラーにならないという点があります。これにより、シェルスクリプトで「ディレクトリが存在するか確認してから作成する」という冗長なチェックが不要になります。

# project と project/backend が存在しない状態から一発で作成
$ mkdir -p project/backend/api/v1
$ ls project/backend/api/
v1

# 既存のディレクトリを指定してもエラーにならない
$ mkdir -p project/backend/api/v1   # 2回目も正常終了(エラーなし)

# -p と -v を組み合わせると何が作られたか一目で分かる
$ mkdir -pv project/frontend/components/ui
mkdir: created directory 'project/frontend'
mkdir: created directory 'project/frontend/components'
mkdir: created directory 'project/frontend/components/ui' 
💡 シェルスクリプトでは常に -p を付けるのが定石

シェルスクリプトの中でmkdirを使う場合は、ほぼ常に -p を付けることが推奨されます。理由は「ディレクトリがすでに存在する場合のエラー」を防げること、「中間ディレクトリが存在しない場合のエラー」も同時に防げること。スクリプトが途中で止まる原因を一つ減らせます。

4-3. -pで複数の深い階層を一度に作成する

実務でよく使うパターンとして、プロジェクトの複数の深い階層を一度に作成する方法があります。スペースで区切って複数のパスを指定できます。

# AIプロジェクトの全ディレクトリ構成を一発作成
$ mkdir -p myai/{datasets/{train,val,test},models/{checkpoints,exports},logs,src,notebooks}

# 展開後のイメージ(ブレース展開との組み合わせは次のセクションで詳述)
myai/
├── datasets/
│   ├── train/
│   ├── val/
│   └── test/
├── models/
│   ├── checkpoints/
│   └── exports/
├── logs/
├── src/
└── notebooks/

# Webサービスのディレクトリ構成例
$ mkdir -p webapp/{public/{css,js,images},src/{components,pages,utils},tests,docs}
AI鬼管理山崎 AI鬼管理山崎
ブレース展開(後述)と -p を組み合わせると、複雑なプロジェクト構成も1行で作れます。弊社では新しいAI自動化プロジェクトを始めるたびに、この手法でフォルダ構成をセットアップするシェルスクリプトを使っています。

05 -mオプション詳解――パーミッションを指定して作成する Linuxのパーミッション体系を理解し、セキュアなディレクトリを作る

-m(--mode)オプションは、ディレクトリを作成する際にパーミッション(アクセス権限)を同時に設定するオプションです。通常のmkdirで作成されたディレクトリのパーミッションは、システムの umask 設定に従いますが、-m を使うと意図通りのパーミッションで作れます。特にセキュリティが重要なサーバー環境では必須知識です。

📚 用語解説

パーミッション(アクセス権限):Linuxで各ファイル・ディレクトリに設定される「誰が何をできるか」の権限情報。「読み取り(r)」「書き込み(w)」「実行(x)」の3種類の権限を、「所有者(owner)」「グループ(group)」「その他(other)」の3者に対して個別に設定できます。

5-1. パーミッションの8進数表記を理解する

パーミッションは8進数(0〜7)の3桁の数字で表します。各桁が「所有者」「グループ」「その他」の権限に対応し、各桁の数字は「読み取り=4・書き込み=2・実行=1」の合計値です。ディレクトリの場合、「実行(x)権限」が「ディレクトリに入れる(cd できる)」権限になります。

8進数値権限の組み合わせ意味
7rwx (4+2+1)読み取り・書き込み・実行 すべて可
6rw- (4+2)読み取り・書き込み可、実行不可
5r-x (4+1)読み取り・実行可、書き込み不可
4r-- (4)読み取りのみ可
0--- (0)アクセス不可

よく使われるディレクトリのパーミッション設定は以下の通りです。

パーミッション所有者グループその他典型的な用途
755rwxr-xr-xWebサーバーの公開ディレクトリ(デフォルト)
700rwx------個人の秘密ディレクトリ(SSHキーなど)
750rwxr-x---グループ内で共有するが外部には非公開
770rwxrwx---チームで共同作業するディレクトリ
777rwxrwxrwx全員が読み書き可(セキュリティリスク高)

5-2. -mオプションの使い方

# パーミッション755で作成(Webサーバー向け標準設定)
$ mkdir -m 755 public_html

# パーミッション700で作成(個人専用の秘密ディレクトリ)
$ mkdir -m 700 private_keys

# パーミッション750でグループ共有ディレクトリを作成
$ mkdir -m 750 team_workspace

# -p と組み合わせて深い階層のパーミッションも指定
$ mkdir -pm 750 project/config/secrets
⚠️ 777(全員書き込み可)は避ける

パーミッション 777 はすべてのユーザーが読み書き実行できる設定で、サーバー環境では深刻なセキュリティリスクになります。特にWebサーバー上のディレクトリに 777 を設定すると、Webから悪意あるファイルを配置されてしまうインジェクション攻撃の足がかりになる可能性があります。公開ディレクトリは 755、設定・秘密ファイルは 700 が基本です。

5-3. umaskとの関係を理解する

mkdirを-mオプションなしで実行したときの実際のパーミッションは、システムの umask(ユーマスク) 設定によって変わります。umaskは「デフォルトの権限から引き算する値」で、多くのLinuxシステムでは 022 に設定されています。この場合、ディレクトリのデフォルト(777)から 022 を引いた 755 が適用されます。

# 現在のumask値を確認
$ umask
0022   ← 一般的なLinuxのデフォルト値

# umask 022 の場合のディレクトリデフォルトパーミッション
# 777(ディレクトリの最大値)- 022(umask)= 755

# -m オプションで明示的にパーミッションを指定すれば umask を無視できる
$ mkdir -m 700 secure_dir   # umaskに関係なく 700 になる

📚 用語解説

umask(ユーマスク):ファイルやディレクトリを作成するときのデフォルトのパーミッションを制限するマスク値。「777 - umask = ディレクトリのデフォルトパーミッション」のように機能します。umask 022 ならデフォルトのディレクトリパーミッションは 755 になります。

06 ブレース展開で複数ディレクトリを一括作成する {}構文で複雑なディレクトリ構成を1行で作り上げるテクニック

bashやzshには ブレース展開(Brace Expansion) という機能があります。`{dir1,dir2,dir3}` という構文を使うと、コマンドを展開して複数の引数として解釈させることができます。mkdirとブレース展開を組み合わせると、複雑なディレクトリ構成をたった1行で作り上げることができます。

📚 用語解説

ブレース展開(Brace Expansion):bash/zshのシェル機能の一つ。{a,b,c} と書くと、前後の文字列と組み合わせてa・b・cを個別の引数として展開します。mkdir {src,docs,tests} は mkdir src docs tests と同等です。カンマで区切るだけでなく、{1..5}のような数値範囲展開も使えます。

6-1. 基本的なブレース展開

# ブレース展開の基本 - 以下の2つは同じ意味
$ mkdir src docs tests logs
$ mkdir {src,docs,tests,logs}

# プレフィックス付き展開
$ mkdir -p project/{src,docs,tests,logs}
# 展開後: mkdir -p project/src project/docs project/tests project/logs

# サフィックス付き展開
$ mkdir -p {frontend,backend}-{dev,prod}
# 展開後: mkdir -p frontend-dev frontend-prod backend-dev backend-prod

6-2. 入れ子のブレース展開(ネスト)

ブレース展開は入れ子にすることができます。これを使うと、複雑な階層構造のディレクトリを1行で作成することができます。ただし可読性が下がるため、複雑すぎる場合はシェルスクリプトに書き出すことを検討してください。

# 入れ子ブレース展開でAIプロジェクト構成を1行で作成
$ mkdir -p myai/{datasets/{train,validation,test},models/{weights,exports},logs/{train,eval},notebooks,src/{data,model,utils},configs}

# 展開されるディレクトリ(確認用に -v を付けて実行)
$ mkdir -pv myai/{datasets/{train,validation,test},models/{weights,exports},logs/{train,eval},notebooks,src/{data,model,utils},configs}
mkdir: created directory 'myai'
mkdir: created directory 'myai/datasets'
mkdir: created directory 'myai/datasets/train'
mkdir: created directory 'myai/datasets/validation'
mkdir: created directory 'myai/datasets/test'
mkdir: created directory 'myai/models'
mkdir: created directory 'myai/models/weights'
mkdir: created directory 'myai/models/exports'
... (以下続く)

6-3. 連番ディレクトリの一括作成

ブレース展開では `{1..10}` のような数値範囲も使えます。バックアップを日別や月別に管理するディレクトリを一括作成する場合に便利です。

# 01から12まで月別ディレクトリを作成
$ mkdir -pv 2026/{01,02,03,04,05,06,07,08,09,10,11,12}
mkdir: created directory '2026'
mkdir: created directory '2026/01'
... (中略)
mkdir: created directory '2026/12'

# 数値範囲展開版(同じ結果)
$ mkdir -p 2026/{01..12}

# 連番テストデータディレクトリを100個作成
$ mkdir -p test-{001..100}
代表菅澤 代表菅澤
AIの実験では「同じ構成のディレクトリをexp-001、exp-002...と連番で用意したい」というケースがよくあります。ブレース展開の連番機能を使えば、mkdir -p experiments/exp-{001..050} と1行で50個のディレクトリが作れます。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 シェルスクリプトでの活用――条件付き作成・ループ処理 繰り返し使う環境構築スクリプトにmkdirを組み込む実践的な方法

mkdirをシェルスクリプトに組み込むことで、環境構築の自動化が実現できます。「新しいプロジェクトを開始するたびに同じフォルダ構成を手動で作る」という繰り返し作業を、スクリプト1本で完全自動化できます。

7-1. ディレクトリが存在する場合の条件付き作成

スクリプトで最もよく使うパターンの一つが「ディレクトリが存在しない場合のみ作成する」条件付き処理です。-pオプションを使えばほぼ同じことができますが、明示的に条件チェックをしてログを出したい場合もあります。

#!/bin/bash
# ディレクトリが存在しない場合のみ作成する例

TARGET_DIR="/home/user/workspace/myproject"

if [ ! -d "$TARGET_DIR" ]; then
    mkdir -p "$TARGET_DIR"
    echo "作成しました: $TARGET_DIR"
else
    echo "既に存在します: $TARGET_DIR"
fi

# -p を使えば同じことを1行で(エラーなし)
mkdir -p "$TARGET_DIR"   # 存在しても存在しなくてもOK

7-2. プロジェクト初期化スクリプト

実務でよく作るのが「新プロジェクトの初期ディレクトリ構成を一発で作るスクリプト」です。新しいAIプロジェクトやWebアプリを始めるたびに、このスクリプトを実行するだけで統一された構成が整います。

#!/bin/bash
# init_ai_project.sh - AIプロジェクトの初期化スクリプト

PROJECT_NAME="${1:-myai_project}"
BASE_DIR="/home/user/projects/${PROJECT_NAME}"

echo "=== AIプロジェクト初期化: ${PROJECT_NAME} ==="

# 主要ディレクトリを一括作成
mkdir -pv "${BASE_DIR}"/{
  datasets/{raw,processed,train,validation,test},
  models/{weights,exports,archived},
  logs/{training,evaluation,inference},
  src/{data,models,training,evaluation,utils},
  notebooks,
  configs,
  tests,
  docs
}

# .gitignore を自動作成
cat > "${BASE_DIR}/.gitignore" << 'GITIGNORE'
datasets/raw/
models/weights/*.pt
models/weights/*.pth
logs/
*.pyc
__pycache__/
.env
GITIGNORE

echo ""
echo "=== 初期化完了 ==="
echo "プロジェクトパス: ${BASE_DIR}"
echo "ディレクトリ構成を確認:"
ls -la "${BASE_DIR}"

7-3. ループを使った一括作成

配列やリストからディレクトリ名を読み込んでループで作成するパターンも便利です。特にCSVファイルや設定ファイルからディレクトリ名を動的に生成する場合に活用できます。

#!/bin/bash
# client_list.txt に記載された顧客名ごとのディレクトリを作成

BASE_DIR="/home/user/clients"
CLIENT_LIST="client_list.txt"

while IFS= read -r client; do
    client_dir="${BASE_DIR}/${client}"
    mkdir -p "${client_dir}"/{contracts,reports,meetings,deliverables}
    echo "作成: ${client_dir}"
done < "$CLIENT_LIST"

echo "全クライアントディレクトリの作成完了"

# 日付ベースのバックアップディレクトリを自動作成(cronに登録して毎日実行)
TODAY=$(date +%Y/%m/%d)
mkdir -p "/backup/${TODAY}"
echo "バックアップ先: /backup/${TODAY}"
スクリプト
ファイル作成

init_project.sh
実行権限付与
chmod +x init_project.sh
引数付きで実行
./init_project.sh myai
ディレクトリ
構成完成

すぐに開発開始

08 よくあるエラーと対処法 mkdirで遭遇する典型的なエラーと、その原因・解決方法を整理

mkdirはシンプルなコマンドですが、いくつかの典型的なエラーがあります。エラーメッセージを読めるようになると、原因特定と対処が格段に速くなります。

エラーメッセージ原因対処法
mkdir: cannot create directory 'xxx': File exists同名のファイル(またはディレクトリ)が既存-p を付ける(ディレクトリの場合)または別名を使う
mkdir: cannot create directory 'xxx/yyy': No such file or directory親ディレクトリが存在しない-p オプションを付ける
mkdir: cannot create directory 'xxx': Permission denied作成先ディレクトリへの書き込み権限がない自分が書き込める場所に作成する(管理者権限が必要な場合はsudoを使う)
mkdir: cannot create directory 'xxx': Read-only file systemファイルシステムが読み取り専用でマウントされている別のファイルシステムに作成するかマウントを解除して再マウント
bash: mkdir: command not foundmkdirがインストールされていないcoreutilsをインストールする

8-1. 「File exists」エラーへの対処

最もよく遭遇するエラーは「File exists(ファイルが既存)」です。同じ名前のファイル(ディレクトリではなくファイル)が既に存在する場合は、-pオプションを付けてもエラーになります。同名のディレクトリが既存の場合は-pを付ければエラーなく通過します。

# ディレクトリが既存の場合: -p なしはエラー
$ mkdir myproject
mkdir: cannot create directory 'myproject': File exists

# -p を付ければエラーにならない(既存ディレクトリはそのまま)
$ mkdir -p myproject   # エラーなし

# 同名のファイル(ディレクトリではない)が既存の場合: -p でもエラー
$ touch myfile
$ mkdir myfile
mkdir: cannot create directory 'myfile': File exists
# この場合は先にファイルを削除するか、別の名前を使う

8-2. 「Permission denied」エラーへの対処

「Permission denied(権限なし)」エラーは、作成先のディレクトリに対して書き込み権限がない場合に発生します。自分のホームディレクトリ以下や、適切な権限が付与されたディレクトリ以下にのみディレクトリを作成できます。

# 自分に権限のない場所への作成は拒否される
$ mkdir /app/newdir
mkdir: cannot create directory '/app/newdir': Permission denied

# 解決法1: 権限のある場所(ホームディレクトリなど)に作成する
$ mkdir ~/app/newdir   # これは成功

# 解決法2: 管理者権限で実行(必要な場合のみ)
$ sudo mkdir /app/newdir   # sudoは本当に必要な場合のみ使う

# 解決法3: 作成後にオーナーを変更
$ sudo mkdir /app/newdir
$ sudo chown $USER:$USER /app/newdir
💡 権限エラーは慎重に

Permission deniedが出たとき、即座に sudo を使うのは良くないプラクティスです。本当に管理者権限が必要な場所なのか、それとも自分のホームディレクトリ以下の別の場所に作成すべきなのかをまず検討しましょう。不用意に sudo mkdir をすると、意図しない場所に管理者所有のディレクトリが作成されることがあります。

09 AIプロジェクト・サーバー環境構築での実務シナリオ 現場でよく使うmkdirの活用パターンを実例で解説

ここからは、実際の業務でmkdirをどう活用するかを具体的なシナリオで解説します。Linuxコマンドの理解を「使える」状態まで引き上げるには、実際の業務文脈で考えることが重要です。

9-1. AIプロジェクトの標準ディレクトリ構成

機械学習・生成AIプロジェクトでは、データセット・モデル・ログ・ソースコードなどを整理した標準的なフォルダ構成が重要です。プロジェクトごとに構成がバラバラだと、後からコードを読んだときに「どこに何があるか」が分からなくなります。以下のような標準構成をシェルスクリプト化しておくと再利用性が高まります。

# AIプロジェクトの推奨ディレクトリ構成(1コマンドで作成)
$ mkdir -pv myai_project/{
    data/{raw,processed,interim,external},
    models/{experiments,production,archived},
    src/{features,models,visualization,utils},
    notebooks/{exploratory,reporting},
    reports/{figures,tables},
    logs,
    configs,
    tests,
    docs
}

# 生成される構成
myai_project/
├── data/                  ← データ管理
│   ├── raw/               ← 生データ(変更禁止)
│   ├── processed/         ← 前処理済みデータ
│   ├── interim/           ← 中間処理データ
│   └── external/          ← 外部データセット
├── models/                ← モデル管理
│   ├── experiments/       ← 実験中のモデル
│   ├── production/        ← 本番用モデル
│   └── archived/          ← アーカイブ
├── src/                   ← ソースコード
├── notebooks/             ← Jupyter Notebook
├── reports/               ← レポート・可視化
├── logs/                  ← 学習ログ
├── configs/               ← 設定ファイル
├── tests/                 ← テストコード
└── docs/                  ← ドキュメント

9-2. Webサーバーの環境構築

Nginxなどを使ったWebサーバーのバーチャルホスト設定では、ドキュメントルートやログ保存先など、複数のディレクトリを一括で作成する必要があります。以下のようなスクリプトを用意しておくと、新しいサイトを追加するたびに迷いなくセットアップできます。

#!/bin/bash
# Webサイトの基本ディレクトリ構成を作成

SITE_NAME="${1}"
BASE="/var/www/${SITE_NAME}"

mkdir -p "${BASE}"/{public_html,logs,backups,configs}
echo "サイトディレクトリ作成完了: ${BASE}"

# 所有者・パーミッション設定
# (実際の設定は環境に応じて調整)
echo "ディレクトリ構成:"
ls -la "${BASE}"
ドメイン取得・
サーバー準備

VPS・クラウド
mkdirで
構成作成

スクリプト実行
Nginx設定
ファイル作成

バーチャルホスト
サービス
起動・確認

サイト公開
代表菅澤 代表菅澤
弊社では新しいAI業務自動化システムを立ち上げるたびに、このような初期化スクリプトを実行しています。ディレクトリ構成が統一されているので、1ヶ月後に見返してもどこに何があるかすぐ分かります。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

10 Claude Codeにディレクトリ構成を自動化させる 「このプロジェクトの構成を作って」と話しかけるだけで完了する

ここまでmkdirコマンドを詳しく解説しましたが、実を言うと弊社(株式会社GENAI)では複雑なディレクトリ構成の作成を毎回手で書いているわけではありません。Claude Code(Anthropicのターミナル上で動くAIエージェント)に「このプロジェクトのディレクトリ構成を作って」と話しかけるだけで、適切なmkdirコマンドを生成・実行してくれるからです。

📚 用語解説

Claude Code:Anthropicが提供するターミナル上で動くAIエージェント。日本語で指示するだけで、ファイル操作・コマンド実行・スクリプト生成まで自律的に行える。Claude ProプランまたはMaxプランに追加料金なしで含まれます。

10-1. Claude Codeへの指示例

Claude Codeはターミナルから起動し、自然な日本語でディレクトリ構成の要件を伝えるだけで、適切なmkdirコマンドを考えて実行してくれます。mkdirの文法を覚える必要がなく、「何を作りたいか」を日本語で説明するだけで済みます。

# Claude Code への指示例(ターミナルで "claude" 起動後)

「PythonのFlask APIプロジェクトの標準的なディレクトリ構成を作って」

「機械学習プロジェクト用のフォルダ構成を作って。
 データセット・モデル・ログ・ソースコード・テストが整理されるように」

「Webアプリのフロントエンドとバックエンドを分けた
 モノレポ構成のフォルダを作って」

「次のフォルダ構成を作ってほしい:
  - 顧客別フォルダ(東京電機、大阪産業、名古屋商事)
  - 各フォルダに 見積書・契約書・報告書・議事録 のサブフォルダ」

Claude Codeはこれらの指示を受け取り、適切なmkdir -p コマンドとブレース展開を使ってディレクトリを作成し、ls コマンドで確認結果まで返してくれます。さらに、READMEや.gitignoreなどの基本ファイルも一緒に作成することを提案してくれます。

Claude Codeに
日本語で依頼

「〇〇プロジェクトの構成を作って」
最適な
mkdir構文を生成

-p・ブレース展開を自動選択
実行・確認
ls で構成を表示
追加作業も
連続実行

README・設定ファイルも

10-2. mkdirを学ぶ価値とClaude Codeの関係

「Claude Codeに任せればmkdirを覚える必要はないのでは?」という疑問もあるかもしれません。しかし、mkdirの基本を理解しておくことはClaude Codeをより効果的に使うためにも重要です。Claude Codeが提案したディレクトリ構成が正しいかを判断したり、「-m 750で作って」と具体的な要件を伝えたりするには、コマンドの知識が背景にある必要があります。

作業Claude Codeなし(手動)Claude Codeあり削減時間
標準プロジェクト構成作成mkdir を10回以上入力(5〜10分)「構成を作って」と一言(1分)約85%削減
複数クライアント向けフォルダ一括作成ループスクリプト作成(30分〜)「20社分のフォルダを」と指示(3分)約90%削減
パーミッション付き環境構築コマンド調査しながら実行(20分)「750でチームフォルダを」(2分)約90%削減
AI鬼管理山崎 AI鬼管理山崎
弊社では「mkdirなどの基本コマンドの知識」と「Claude Codeへの依頼スキル」を両方持つことで、一番の効率が出ています。コマンドを知っているから Claude Code の提案を検証・修正できる。そのバランスが大切です。

Linux・AI業務自動化の導入支援をAI鬼管理が担います

mkdirのようなLinuxコマンドの活用から、Claude Codeを使ったサーバー環境の自動化まで、AI鬼管理では経営者・管理職の方でもすぐ始められる形で業務自動化の導入をサポートします。

代表菅澤 代表菅澤
「Linuxは難しそう」「AIツールの導入は技術が必要そう」というイメージが先行して、一歩踏み出せない方が多いです。弊社では、エンジニアでない方でも実際に業務を自動化できるところまでサポートしています。まず無料相談からどうぞ。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. mkdirコマンドでディレクトリを作成できましたが、cdで入れません。なぜですか?

A. ディレクトリに「実行(x)」権限がない可能性があります。Linuxではディレクトリへのcd(移動)には実行権限が必要です。ls -la で確認し、drwx------ のようにd(ディレクトリ)の後に権限が表示されます。chmod u+x ディレクトリ名 で実行権限を追加できます。

Q. mkdir -p と mkdir の違いは何ですか?

A. 主な違いは2点です。1点目:-p を付けると中間の親ディレクトリが存在しなくても、必要なすべての中間ディレクトリを自動作成します。-p なしでは親ディレクトリが存在しないとエラーになります。2点目:-p を付けると作成先のディレクトリが既に存在してもエラーになりません。シェルスクリプトでは常に -p を付けることを推奨します。

Q. mkdirで一度に作れるディレクトリの数に制限はありますか?

A. システムの引数リストの長さ制限(ARG_MAX)に依存しますが、通常の用途では気にする必要がない十分な数です。ただし、数千〜数万のディレクトリを一括作成する場合はシェルスクリプトのループ処理か、xargs を組み合わせて分割実行することを推奨します。

Q. Dockerfileの中でmkdirを使う場合、注意点はありますか?

A. DockerfileではRUNコマンドでmkdirを使います。-p オプションを付けることと、パーミッション設定を必要に応じて行うことが重要です。また、Dockerfile内での複数のRUNコマンドはレイヤーが増えてイメージが大きくなるため、mkdir と chmod などは && でつないで1つのRUN命令にまとめることが推奨されます。

Q. Macのターミナルでもmkdirの使い方はLinuxと同じですか?

A. ほぼ同じです。macOSのmkdirはBSD版ですが、-p・-m・-v などの主要オプションは同じように使えます。ただし一部のGNUオプション(--parents のような長いオプション名)が使えない場合があります。完全にLinuxと同じ動作にしたい場合は、Homebrewで GNU coreutils をインストールしてgmkdirコマンドを使う方法もあります。

Q. Claude Codeを使えばmkdirを覚えなくてもいいですか?

A. 基本的な使い方はClaude Codeが代替できます。ただし、-mオプションでパーミッションを適切に設定するためのLinux権限体系の理解や、「なぜこのディレクトリ構成が適切なのか」を判断するためには、mkdirとディレクトリ管理の基礎知識が必要です。Claude Codeをより賢く使うためにも、基礎コマンドの理解は有効です。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月18日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。