====== Linux - Find - Find Empty Files ====== find ./ -type f -size 0 or find ./ -type f -empty This commands will find all zero size files in the current directory with sub-directories and then print the full pathname for each file to the screen. * **./** means start searching from the current directory. If you want to find files from another directory then replace the ./ with the path to needed directory. For example, to search everything under the system log directory you need to replace ./ with /var/log. * **-type f** flag specifies to find only files. * **-size 0** and **-empty** flags specifies to find zero length files. ---- ===== Find and then delete all zero size files ===== To find and then delete all zero size files, there are variants you can use: find ./ -type f -size 0 -exec rm -f {} \; find ./ -type f -size 0 | xargs rm -f find ./ -type f -size 0 -delete * The xargs will cause all the filenames to be sent as arguments to the **rm -f** commands. This will save processes that are forked every time **-exec rm -f** is run. But it fails with spaces etc in file names. **NOTE:** The **-delete** option is the best choice when it is supported by the find you are using. It avoids the overhead of executing the **rm** command by doing the **unlink()** call inside **find()**.