「ファイルを作りたい」「別のディレクトリに移したい」「特定の名前のファイルを探したい」——Ubuntuを使い始めると、こういった操作をコマンドラインでサッとこなせるようになりたいと感じる瞬間が増えてきます。
この記事では touch・mkdir・cp・mv・rm・find・grep・stat といったファイル操作コマンドを、Ubuntu 24.04 LTS の Docker 公式イメージで実際に動かした出力をそのまま載せて解説します。「コマンドは書いてあるけど本当にこう動くの?」という疑問を解消できる構成です。
本記事はファイル操作のド基本から find の応用オプションまでカバーしているので、初めてLinuxを触る方にも VPS 運用を始めたい方にもそのまま使えます。
この記事のポイント
- Ubuntu 24.04 LTS(Docker コンテナ)で全コマンドを実際に実行して確認済み
touch/mkdir/cp/mv/rmの基本操作をコマンド出力付きで解説findは-name・-type・-maxdepth・-newer・-sizeオプションの実測結果を掲載grepは-r・-i・-n・-lなど6種類のオプションを実行例付きで紹介rm -rfなどの危険なコマンドは注意ボックスで警告。安全な使い方も解説
目次
- 検証環境(Ubuntu 24.04 LTS)
- ファイル・ディレクトリを作成する(touch / mkdir)
- ファイルをコピーする(cp)
- ファイルを移動・リネームする(mv)
- ファイルを削除する(rm)
- ファイルを検索する(find)
- ファイル内の文字列を検索する(grep)
- ファイルの詳細情報を確認する(ls / stat)
- よくあるエラーと対処法
- まとめ
検証環境(Ubuntu 24.04 LTS)
本記事のコマンドは、以下の環境で実行・確認しています。VPS や WSL で Ubuntu を使っている方も同じ操作で動きます。
| 項目 | 詳細 |
|---|---|
| OS | Ubuntu 24.04.2 LTS (Noble Numbat) |
| 実行環境 | Docker 公式イメージ ubuntu:24.04 |
| findutils(find) | 4.9.0-5build1 |
| GNU coreutils(cp / mv / rm) | 9.4 |
| GNU grep | 3.11 |
| 計測日 | 2026-06-13 |

Dockerコンテナで lsb_release -a および各コマンドの --version を実行した結果です。Ubuntu 24.04 LTS には 追加インストール不要でファイル操作コマンドが全て揃っています。
Ubuntu 22.04 を使っている方へ
Ubuntu 22.04 LTS では findutils が 4.8.0、coreutils が 8.32、grep が 3.7 です。コマンドの基本的な使い方は同じですが、マイナーなオプションの挙動が一部異なる場合があります。可能であれば バージョン比較セクションを参照してください。
ファイル・ディレクトリを作成する(touch / mkdir)
手順1:touchで空のファイルを作成する
touch は空のファイルを作成するコマンドです。既存ファイルに使うとタイムスタンプが更新されます。
$ ls -la testfile.txt
-rw-r–r– 1 root root 0 Jun 13 09:28 testfile.txt
ファイルサイズが 0 バイトの空ファイルが作成されました。複数ファイルを一度に作成したい場合はスペース区切りで並べます。
$ ls
file1.txt file2.txt file3.log
手順2:mkdirでディレクトリを作成する
mkdir(make directory)でディレクトリを作成します。-p オプションを使うと、中間ディレクトリも一括作成できます。
$ mkdir -p myproject/src/components
$ ls -la myproject/
total 12
drwxr-xr-x 3 root root 4096 Jun 13 09:28 .
drwxr-xr-x 1 root root 4096 Jun 13 09:28 ..
drwxr-xr-x 3 root root 4096 Jun 13 09:28 src
Ubuntu 24.04 でコンテナ内から実行した実際の出力です。-p オプションなしで存在しないパスの中間ディレクトリを指定すると No such file or directory エラーが出るので、階層の深いパスを一度に作る場合は必ず -p をつけます。
ファイルをコピーする(cp)
cp(copy)コマンドの基本的な書式は cp コピー元 コピー先 です。
$ ls testfile*.txt
testfile.txt testfile_backup.txt
Ubuntu 24.04 の Docker コンテナで確認済みです。ディレクトリごとコピーするには -r(再帰的コピー)オプションが必要です。
$ ls -d myproject*/
myproject/ myproject_backup/
-p オプションを追加すると、ファイルのタイムスタンプ・パーミッション・所有者をそのまま保持してコピーできます。バックアップ用途では cp -rp の組み合わせが便利です。
上書きに注意
コピー先に同名ファイルが存在する場合、デフォルトでは確認なしに上書きされます。-i オプションを付けると上書き前に確認を求めるようになります(cp -i src dst)。
ファイルを移動・リネームする(mv)
mv(move)はファイルを移動するコマンドですが、同じディレクトリ内でコピー先名を変えれば「リネーム」として使えます。
$ ls testfile*.txt
testfile_backup.txt testfile_renamed.txt
元のファイル名 testfile.txt が消え、testfile_renamed.txt に変わりました。cp と違ってコピーではなく「移動」なので元ファイルは残りません。
別ディレクトリへの移動も同じ書式です。
$ ls myproject/
src testfile_renamed.txt
ファイルを削除する(rm)
rm(remove)コマンドでファイルを削除します。削除したファイルはゴミ箱に入らず、直接消えます。
$ ls testfile*.txt 2>/dev/null || echo “ファイルなし”
ファイルなし
ディレクトリを削除するには -r(再帰)オプションが必要です。空のディレクトリだけを消したい場合は rmdir コマンドも使えます。
$ ls -d myproject*/
myproject/
rm -rf は絶対に確認してから実行すること
rm -rf /path/to/dir は指定ディレクトリ以下を全て即座に削除します。パスを1文字でも間違えると取り返しがつきません。実行前に必ず ls /path/to/dir で中身を確認してください。rm -rf /(ルートディレクトリ)は OS ごと壊れます。
ファイルを検索する(find)
find コマンドは、ファイル名・拡張子・更新日時・サイズ・種類などの条件でファイルシステムを再帰的に検索できる強力なツールです。Ubuntu 24.04 には GNU findutils 4.9.0 が標準搭載されています。

手順1:ファイル名で検索する(-name)
/home/ubuntu/myproject/readme.txt
/home/ubuntu/notes.txt
$ find . -name “config.php”
./webapp/config.php
ワイルドカード(*)を使えば拡張子でまとめて検索できます。.(カレントディレクトリ)から検索する場合が多いです。大文字小文字を区別したくなければ -iname を使います。
手順2:種類で絞り込む(-type)
-type f でファイルのみ、-type d でディレクトリのみに絞り込めます。Ubuntu 24.04 の Docker コンテナで実測した出力です。
/tmp/searchtest/file1.txt
/tmp/searchtest/subdir2/file5.txt
/tmp/searchtest/file2.log
/tmp/searchtest/subdir1/subsubdir/file4.conf
/tmp/searchtest/subdir1/file3.txt
$ find /tmp/searchtest -type d
/tmp/searchtest
/tmp/searchtest/subdir2
/tmp/searchtest/subdir1
/tmp/searchtest/subdir1/subsubdir
手順3:深さを制限する(-maxdepth)
広いディレクトリを検索するとき、-maxdepth で再帰の深さを制限すると実行速度が上がります。
/tmp/searchtest/file1.txt
/tmp/searchtest/subdir2/file5.txt
/tmp/searchtest/subdir1/file3.txt
-maxdepth 2 を付けると、3階層目以降(subdir1/subsubdir/)は検索されません。実際の出力でも file4.conf が含まれていないことが確認できます。
手順4:更新日時・サイズで絞り込む(-newer / -size)
./newfile.txt
$ find . -size +1M
./large_backup.tar.gz
$ find . -size +0c -name “*.txt”
./withcontent.txt
-newer ファイル名 は指定ファイルより新しいものを、-size +0c はサイズが0バイトより大きいものを検索します。空ファイルを除外したいときに便利です。
ファイル内の文字列を検索する(grep)
grep はファイルの中身に含まれる特定の文字列を検索するコマンドです。ログファイルのエラー確認やソースコードの検索など、実際の開発・運用現場で毎日使います。Ubuntu 24.04 には GNU grep 3.11 が搭載されています。
基本的な使い方
ubuntu file operations
$ grep -i “ubuntu” /tmp/greptest/b.txt
Ubuntu is great
ubuntu file operations
デフォルトは大文字小文字を区別します。-i で大文字小文字を無視した検索になります。実測では Ubuntu is great(先頭大文字)が -i 付きで追加マッチしました。
便利なオプション
/tmp/greptest/a.txt:hello linux
$ grep -l -i “ubuntu” /tmp/greptest/*.txt
/tmp/greptest/b.txt
$ grep -n “o” /tmp/greptest/a.txt
1:Hello World
2:hello linux
$ grep -c “ubuntu” /tmp/greptest/b.txt
1
$ grep -v “ubuntu” /tmp/greptest/b.txt
Ubuntu is great
実測した各オプションの意味をまとめます。
| オプション | 動作 | 用途例 |
|---|---|---|
-r |
ディレクトリを再帰的に検索 | プロジェクト全体でエラーを探す |
-i |
大文字小文字を区別しない | ログ内のキーワードを漏れなく拾う |
-n |
行番号を表示 | ソースコードの該当行に素早くジャンプ |
-l |
マッチしたファイル名のみ表示 | 対象ファイルを絞り込んでから開く |
-c |
マッチした行数を表示 | エラーが何件あるか数える |
-v |
マッチしない行を表示 | 除外キーワードでフィルタリング |
ファイルの詳細情報を確認する(ls / stat)
ls -la でパーミッションを確認する
ls -la はファイルのパーミッション・所有者・サイズ・タイムスタンプを一覧表示します。
-rw——- 1 ubuntu ubuntu 399 Jun 13 id_ed25519
-rw-r–r– 1 ubuntu ubuntu 95 Jun 13 id_ed25519.pub
秘密鍵(id_ed25519)は -rw-------(600)、公開鍵(id_ed25519.pub)は -rw-r--r--(644)です。秘密鍵のパーミッションが広すぎると SSH 接続が拒否されることがあります。
stat でファイルのinode情報を確認する
stat コマンドを使うと、ls より詳細なメタデータ(inode番号・ブロック数・アクセス/変更/変更時刻)を確認できます。Ubuntu 24.04 のコンテナで実行した出力です。
File: /tmp/stattest.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 0,205 Inode: 1473809 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-06-13 09:29:28.031799001 +0000
Modify: 2026-06-13 09:29:28.031799001 +0000
Change: 2026-06-13 09:29:28.031799001 +0000
Birth: 2026-06-13 09:29:28.031799001 +0000
Access・Modify・Change・Birth の4種のタイムスタンプが確認できます。Modify はファイルの中身が変わった時刻、Change はメタデータ(パーミッション等)が変わった時刻で別物です。

Ubuntu 22.04 と 24.04 のバージョン比較
実際に両バージョンの Docker イメージで --version を実行して比較しました。

コマンドの基本的な使い方は両バージョンで変わりませんが、バグ修正やパフォーマンス改善が含まれています。特に coreutils が 8.32 から 9.4 へ大幅更新されており、cp・mv・rm の動作改善が含まれています。
よくあるエラーと対処法
①「No such file or directory」が出る
cp: /home/ubuntu/notexist.txt: No such file or directory
原因:コピー元ファイルが存在しない、またはパスを間違えています。ls /home/ubuntu/ でファイルの存在とパスを確認してください。ファイル名のタイポが最もよくある原因です。
②「Permission denied」が出る
rm: cannot remove ‘/etc/hosts’: Permission denied
$ sudo rm /etc/hosts
原因:他のユーザー(rootなど)が所有するファイルを操作しようとしています。必要であれば sudo を付けて実行してください。ただし /etc/hosts などシステムファイルの削除は慎重に。
③ mkdirで「File exists」が出る
mkdir: cannot create directory ‘myproject’: File exists
$ mkdir -p myproject
(エラーなし)
原因:既に同名のディレクトリが存在しています。-p オプションを付けると既存ディレクトリがあってもエラーにならず、安全にスクリプト内でも使えます。
④ findで「Permission denied」が大量に出る
/var/log/syslog
/var/log/auth.log
find / でルートから検索すると、読み取り権限のないディレクトリでエラーが出続けます。2>/dev/null でエラー出力を捨てるか、検索範囲を絞ることで解決できます。
まとめ

Ubuntu 24.04 LTS の Docker コンテナで実際に動かして確認した内容をまとめます。
touchは空ファイル作成、mkdir -pは階層ディレクトリを一括作成できるcp -rでディレクトリを再帰コピー、-pでタイムスタンプ・パーミッションを保持mvは移動もリネームも同じコマンドで実現できるrm -rfは元に戻せないため、実行前に必ずlsで確認するfindは-name・-type・-maxdepth・-newer・-sizeを組み合わせて精密な検索ができるgrep -r -i -nの組み合わせでプロジェクト全体のキーワード検索が効率的にできるstatで Access/Modify/Change/Birth の4種タイムスタンプをまとめて確認できる
ファイル操作コマンドをマスターしたら、次は自分のVPSサーバーを借りてLinuxを実際に運用する環境を作ってみましょう。
VPSを借りてLinuxを本番環境で使いたい方へ
本記事で学んだコマンドはVPS上のLinuxでもそのまま使えます。初めてVPSを借りる方向けに、各社の料金・スペック・日本語サポートを実測ベンチで比較した記事も参考にしてください。


コメント