「findで空のディレクトリを削除する方法」の版間の差分

提供: Linux入門
移動: 案内検索
(ページの作成:「Unix の find コマンドは、ファイルやディレクトリを探す便利なコマンドです。 find には、いろいろなオプションがありますが、...」)
 
 
行29: 行29:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
find . -type d -empty -exec rm -f {} \;
+
find . -type d -empty -exec rmdir {} \;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
xargs を使う場合には find の -print0 オプションを併用することで、スペースが含まれるファイル名(ディレクトリ名)でも正しく削除を実行できます。
 
xargs を使う場合には find の -print0 オプションを併用することで、スペースが含まれるファイル名(ディレクトリ名)でも正しく削除を実行できます。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
find . -type -d -empty -print0 | xargs -0 rm
+
find . -type -d -empty -print0 | xargs -0 rmdir
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== 関連項目 ==
 
== 関連項目 ==

2018年5月3日 (木) 16:54時点における最新版

Unix の find コマンドは、ファイルやディレクトリを探す便利なコマンドです。 find には、いろいろなオプションがありますが、空のディレクトリを削除する機能もあります。

読み方

find
ふぁいんど

概要

自分で1つ1つのディレクトリを空であること確認して、ディレクトリを rmdir で削除するよりも、 find でサクっと空のディレクトリを削除することができます。

ディレクトリを見つける方法

ディレクトリを見つける方法は、 type オプションでディレクトリを指定するだけです。

find . -type d

空のディレクトリを見つける方法

空のディレクトリを見つける場合には、type オプションでディレクトリを指定し、 empty オプションをつけます。

find . -type d -empty

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

find で空のディレクトリを削除する方法は、空のディレクトリを見つけるオプションに加えて、削除するオプションを指定します。

OSのfindコマンドによっては -delete オプションがないかもしれませんが、FreeBSD, Mac , WSLのUbuntuなどの find では以下のコマンドで 空のディレクトリを削除できます。

find . -type d -empty -delete

上記以外の方法では exec オプションや パイプで xargs + rm を組み合わせるといった手法が考えられます。

find . -type d -empty -exec rmdir {} \;

xargs を使う場合には find の -print0 オプションを併用することで、スペースが含まれるファイル名(ディレクトリ名)でも正しく削除を実行できます。

find . -type -d -empty -print0 | xargs -0 rmdir

関連項目