すべてを

▼開く

閉じる▲

サブディレクトリを含めてディレクトリを削除する

○ディレクトリ「dir1/dir2/dir3」を削除する

lsコマンドで削除するディレクトリを見る
$ ls -R
.:
dir1

./dir1:
dir2

./dir1/dir2:
dir3

./dir1/dir2/dir3:

rmdirコマンドで-pオプション、ディレクトリを指定する
$ rmdir -p dir1/dir2/dir3

rmdirコマンドで-pオプションを指定し、削除するディレクトリ「dir1/dir2/dir3」を指示すると、ディレクトリ「dir1/dir2/dir3」が削除される。

このコマンドは、「rmdir dir1/dir2/dir3」 「rmdir dir1/dir2」 「rmdir dir1」の3つのコマンドが1度に実行されたものと同じである。この場合にも、dir1の中にdir2以外のファイルやディレクトリがあってはいけない、dir3でも同様である。

lsコマンドでコマンド実行結果を確認する
$ ls dir1
ls: dir1: そのようなファイルやディレクトリはありません

ディレクトリとその中身を削除する

○ディレクトリ「dir1」を削除する

lsコマンドで削除するディレクトリを見る
$ ls -lR
drwxr-xr-x    2 masa     users        4096  6月 12 17:43 dir1
-rw-r--r--    1 masa     users         256  6月 12 17:26 file1.txt

./dir1:
合計 0
-rw-r--r--    1 masa     users         256  6月 12 17:43 file1.txt

rmコマンドで-rオプション、ディレクトリを指定する
$ rm -r dir1

rmコマンドで-rオプションを指定して削除するディレクトリ「dir1」を指定すると、ディレクトリ「dir1」が削除される。ディレクトリの中にあるファイルも同時に削除される。

コマンドの実行結果を見る
$ ls -lR
-rw-r--r--    1 masa     users         256  6月 12 17:26 file1.txt

所有権が自分または自分の属するグループ以外の他人のディレクトリは削除できない。

削除できるファイル
ディレクトリの所有権が自分にあり、かつ書き込み許可がある
ディレクトリの所有権が自分と同じグループのユーザにあり、かつ書き込み許可がある

●ディレクトリに書き込み許可がない場合

ディレクトリに書き込み許可がない場合、削除してもよいか問い合わせてくる。

lsコマンドで削除するディレクトリを見る
$ ls -l
dr-xr-xr-x    2 masa     users        4096  6月 12 18:52 dir1

rmコマンドで-rオプション、ディレクトリを指定する
$ rm -r dir1
rm: remove write-protected ディレクトリ `dir1'? y

削除してもよい場合は「y」[Return]を入力、削除しない場合は「n」[Return]を入力する。

rmコマンドのオプション
オプション 意 味
-r ディレクトリの中身を再帰的に削除する

空のディレクトリを検索して削除する

○カレントディレクトリ下にある空のディレクトリを検索して削除する

findコマンドでディレクトリと検索オプションを指定する
$ find -type d -empty -exec rmdir {} \;

findコマンドで、検索するディレクトリ「.」検索対象の種類を指定する「-type」対象がディレクトリであることを示す「d」サイズが0を示す「-empty」、検索結果を引数としてコマンドを実行する「-exec」、実行するコマンド「rmdir {}」コマンドの終了を表す「\;」を指定すると、findコマンドにより検索された空のディレクトリが削除される。

実行させるコマンド部分「rm {} \;」の意味

rm 実行するコマンド
{} findの検索結果に置き換えられる部分
\; コマンドの終了(エスケープ文字「\」と終了記号「;」)

「{}」は、findの検索結果のファイル名で置き換えられる。「\」は、シェルが「;」を解釈するのを防ぐためのエスケープ文字で、「;」までがコマンド部分である。。

○削除の許可を求めながらコマンドを実行する

一度にコマンドを実行せずに、コマンドの実行許可を逐次求めながら行うには、「-exec」の代わりに「-ok」を指定する。コマンドを実行する場合は「y」、実行せずにスキップする場合は「n」を入力する。

findコマンドでディレクトリと検索オプションを指定する
$ find -type d -empty -ok rmdir {} \;
< rmdir ... ./dirx/dir1 > ? y
find: ./dirx/dir1: そのようなファイルやディレクトリはありません

オプション 意 味
-type 検索対象の種類を指定する
d 検索対象の種類がディレクトリであることを示す引数
-empty 検索対象が空(サイズが0)
-exec 検索結果を引数としてコマンドを実行する
-ok コマンド実行時に逐次実行許可を求める

空のディレクトリを削除する

○ディレクトリ「dir1」を削除する

rmdirコマンドでディレクトリを指定する
$ rmdir dir1

rmdirコマンドで削除するディレクトリ「dir1」を指示すると、ディレクトリ「dir1」が削除される。rmdirコマンドで削除できるのは、ファイルやサブディレクトリの存在しない空のディレクトリのみである。サブディレクトリが空であっても削除できない。

rmdirコマンドは、ディレクトリに書き込み許可がなくても削除できる。

●空ではないディレクトリを削除しようとする

rmdirコマンドでディレクトリを指定する
$ rmdir dir1
rmdir: `dir1': ディレクトリは空ではありません

空ではないディレクトリ「dir1」を削除しようとしても、エラーとなる。dir1の中にファイル、またはディレクトリが存在すれば、rmdirコマンドでは削除できない。

削除の確認なしにディレクトリとその中身を削除する

○削除の確認なしに「dir1」を削除する

rmコマンドで-rfオプション、ディレクトリを指定する
$ rm -rf dir1

rmコマンドで-rオプションと-fオプションを指定して削除するディレクトリ「dir1」を指示すると、ディレクトリ「dir1」が削除される。この「dir1」の下にファイルやディレクトリがあっても、すべて削除される。

-fオプションがあるので、アクセス権が書込み禁止になっている場合でも削除してもよいかの問い合わせはない。

ただし、所有権が自分または自分の属するグループ以外の他人の物は削除できない。

rmコマンドのオプション
オプション 意 味
-r ディレクトリの中身を再帰的に削除する
-f 削除の確認なしに強制削除する