This question already has an answer here:
- How to delete many 0 byte files in linux? 10 answers
How do I delete a certain file in linux if its size is 0. I want to execute this in an crontab without any extra script.
l filename.file | grep 5th-tab | not eq 0 | rm
Something like this?
For a non-recursive delete (using du and awk):
On Linux, the stat(1) command is useful when you don't need find(1):
The stat command here allows us just to get the file size, that's the
-c %s
(see the man pages for other formats). I am running the stat program and capturing its output, that's the$( )
. This output is seen numerically, that's the outer(( ))
. If zero is given for the size, that is FALSE, so the second part of the OR is executed. Non-zero (non-empty file) will be TRUE, so the rm will not be executed.This works for plain BSD so it should be universally compatible with all flavors. Below.e.g in
pwd
(.
)This will delete all the files in a directory (and below) that are size zero.
If you just want a particular file;
You can use the command
find
to do this. We can match files with-type f
, and match empty files using-size 0
. Then we can delete the matches with-delete
.