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 | xargs rm -rf
書式:find [PATH] -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
-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 f -empty -delete
書式:find [PATH] -type f -empty | xargs rm -rf
書式:find [PATH] -type f -empty -exec rm -rf {} \;
# delete を使用する場合
$ find . -type f -empty -delete
# xargs を使用する場合
$ find . -type f -empty | xargs 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 d -empty | xargs rm -rf
書式:find [PATH] -type d -empty -exec rm -rf {} \;
# delete を使用する場合
$ find . -type d -empty -delete
# exec を使用する場合
$ find . -type d -empty | xargs rm -rf
# exec を使用する場合
$ find test -type d -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



コメント