How do I check if a file is empty or not using bash or ksh shell script under a UNIX / Linux / macOS / OS X / BSD family of operating systems? How do I check if a file is empty in Bash?

You can use the find command and other options as follows. The -s option to the test builtin check to see if FILE exists and has a size greater than zero. It returns true and false values to indicate that file is empty or has some data. This page shows how to check if a file is empty in Bash shell running on a Linux or Unix-like operating systems.

Check If File Is Empty Or Not Using Shell Script

The syntax is as follows:

touch /tmp/file1
ls -l /tmp/file1
find /tmp -empty -name file1

Sample outputs:

/tmp/file1

Now create another file with some data in it:

echo "data" > /tmp/file2
ls -l /tmp/file2
find /tmp -empty -name file2

You should not see any output from the find command.

Bash Script – Check If File is Empty or Not With the -s Option

However, one can pass the -s option as follows in script or shell prompt:

touch /tmp/f1
echo "data" >/tmp/f2
ls -l /tmp/f{1,2}
[ -s /tmp/f1 ] echo $?

Sample outputs:

1

The non zero output indicate that file is empty.

[ -s /tmp/f2 ]
echo $?

Sample outputs:

0
Bash Shell Check If File Is Empty Or Not on a Linux/Unix
Bash Script/Command – Check If File is Empty or Not

The zero output indicate that file is not empty. So you can write a shell script as follows.

Shell Script To Check If File Is Empty OR Not

#!/bin/bash
_file="$1"
[ $# -eq 0 ] && { echo "Usage: $0 filename"; exit 1; }
[ ! -f "$_file" ] && { echo "Error: $0 file not found."; exit 2; } if [ -s "$_file" ] then echo "$_file has some data." # do something as file has data
else echo "$_file is empty." # do something as file is empty 
fi

Run it as follows:
chmod +x script.sh
./script.sh /etc/resolv.conf

Sample outputs:

/etc/resolv.conf has some data.

Run it on an empty file:
touch /tmp/test.txt
./script.sh /tmp/test.txt

Sample outputs:

test.txt is empty.

Conclusion

This page showed how to check if file is empty on a Linux or Unix-like operating systems using various commands. See test command for more info.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Facebook Comments

More Stuff

How to Find and Install Software Applications in Fedora Linux There are countless software packages are available to install on Fedora Linux distribution from the repository provided by Fedora project. You can al...
5 Cool New Projects to Try in Fedora Linux In this article, we will share five cool new projects to try in Fedora Linux distribution. Note that some of these projects may also be work on other ...
How to Install Memcached (Caching Server) on CentOS 7 Memcached is an open source distributed memory object caching program that allows us to improve and speed up the performance of dynamic web applicatio...
How to Install Adobe Flash Player 32 on Fedora Linux Adobe Flash is a web browser plug-in used to display interactive web pages, online games, and to playback video and audio content. Flash displays text...
Spread the love

Posted by News Monkey