In Linux operating system, to find and print the name of all files that has the file size 0 (zero) bytes, in a directory and all its sub-directories recursively, use one of the following commands:

find /path/to/directory/ -size 0 -type f


find /path/to/directory/ -size 0 -type f -print

Replace /path/to/directory/ with actual directory that you want to check. You can use “.” (dot without quotes) to list all files with file size of 0 bytes in the current directory. The “-type f” argument specifies that only regular file type is returned, excluding other file types such as symbolic link, socket, directory, named pipe and etc. Some Linux distributions may require “-print” command to print out the filenames.

To filter and display just files with certain pattern, for example, only files with .log file extension, use “-name” option:

find /path/to/directory/ -size 0 -type f -name "*.log"

Once you have view and verify the list of files that have file size 0, you can easily delete all of them by appending the ‘-delete’ option. For example:

find /path/to/directory/ -size 0 -type f -delete