findコマンドで空ファイル(0バイト)の削除する

findコマンドを利用して0バイトのからファイルを一括削除する方法

0バイトの空ファイルを一括削除したい場合、findコマンドを利用すれば簡単に一括で削除する事ができます

空ファイル、空ディレクトリを一括で削除する

findの「empty」を利用すると空ファイルと空ディレクトリを一括で削除できます

書式:find [PATH] -empty -delete

以下では、testディレクトリに空ファイルと空ディレクトリがあります。test.log, test.txtが空ファイルでtest2.txtが容量があるファイルとなっています。test1ディレクトリが空のディレクトリとなっています。

これを、find test/ -empty -delete とすれば、空ファイル、空ディレクトリとも削除することができます。
また、deleteのオプションが使えない場合は、xargs、exec を使用しても削除できます

書式:find [PATH] -empty -delete | xargs rm -rf
書式:find [PATH] -empty -delete -exec rm -rf {} \;

$ ls -l test/
total 4
drwxrwxr-x 2 expdev expdev 6 Jan 13 14:40 test1
-rw-rw-r-- 1 expdev expdev 9 Jan 13 14:41 test2.txt
-rw-rw-r-- 1 expdev expdev 0 Jan 13 14:40 test.log
-rw-rw-r-- 1 expdev expdev 0 Jan 13 14:40 test.txt

# 空ファイル、空ディレクトリがあるか確認します
$ find test/ -empty
test/test.txt
test/test.log
test/test1

# 空ファイル、空ディレクトリを削除します
$ find test/ -empty -delete

# 空ファイル、空ディレクトリ以外は削除されています
$ ls -l test/
total 4
-rw-rw-r-- 1 expdev expdev 9 Jan 13 14:41 test2.txt

# xargs を使用する場合
$ find test/ -empty | xargs rm -rf

# exec を使用する場合
$ find test/ -empty -exec rm -rf {} \;

空ファイルのみ、findコマンドで一括で削除する

空ディレクトリを残しておいて空ファイルのみを削除する場合も、empty のオプションが利用して、typeオプションでファイルを指定すると、空ディレクトリを残しておいてからファイルのみ削除できます

書式:find [PATH] -type d -empty -delete
書式:find [PATH] -type d -empty -delete | xargs rm -rf
書式:find [PATH] -type d -empty -delete -exec rm -rf {} \;

# delete を使用する場合
$ find . -type f -empty -delete

# exec を使用する場合
$ find . -type f -empty -exec rm -rf {} \;

# exec を使用する場合
$ find test -type f -empty -exec rm -rf {} \;

# からファイルのみを削除できます
$ ls -l test
total 4
drwxrwxr-x 2 expdev expdev 6 Jan 13 14:40 test1
-rw-rw-r-- 1 expdev expdev 9 Jan 13 14:41 test2.txt

 

空ディレクトリのみ、findコマンドで一括で削除する

空ファイルを残しておいて空ディレクトリのみを削除する場合も、empty のオプションが利用して、typeオプションでディレクトリを指定すると、空ファイルを残しておいてからディレクトリのみ削除できます

書式:find [PATH] -type d -empty -delete
書式:find [PATH] -type f -empty -delete | xargs rm -rf
書式:find [PATH] -type f -empty -delete -exec rm -rf {} \;

# delete を使用する場合
$ find . -type d -empty -delete

# exec を使用する場合
$ find . -type d -empty -exec rm -rf {} \;

# exec を使用する場合
$ find test -type f -empty -exec rm -rf {} \;

# からファイルのみを削除できます
$ ls -l test
total 4
-rw-rw-r-- 1 expdev expdev 9 Jan 13 14:41 test2.txt
-rw-rw-r-- 1 expdev expdev 0 Jan 13 14:40 test.log
-rw-rw-r-- 1 expdev expdev 0 Jan 13 14:40 test.txt

スポンサーリンク