Skip to Content

3 ways to check if file exists in bash

In this blog post, we will discuss 3 different ways to check if a file exists in Bash. This is an important skill to have when you are working with files in a Linux environment. Each of these methods has its own benefits and drawbacks, so it is important to understand them all before deciding which one to use. Let’s get started!

The following Linux commands can be used to check if a file exists in bash.

  • test -f /path/to/file && echo “FILE exists.” || echo “File does not exist”
  • [ -e /path/to/file ] && echo “FILE exists.” || echo “File does not exist”
  • [ -f /path/to/file ] && echo “FILE exists.” || echo “File does not exist”

 

Check if a File Exists Using the test Command in bash

The first method we will discuss is using the test command. This is a built-in command in Bash that can be used to test various things. In this case, we are interested in using it to check if a file exists. The syntax for this command is as follows:

test -e /path/to/file

If the file exists, this command will return a 0 exit code. If the file does not exist, it will return a non-zero exit code. So, we can use this command to check if a file exists like so:

if test -e /path/to/file; then
echo “File exists”
else
echo “File does not exist”
fi

We can do this in one command like this.
test -e /path/to/file && echo “FILE exists.” || echo “File does not exist”

Check if a File Exists Using if statement -e option in bash

The best Linux command to check if a file Exists in bash is using the if statement -e option. The -e option is a built-in operator in Bash to check file exists. If the file exists, this command will return a 0 exit code. If the file does not exist, it will return a non-zero exit code.

The syntax for this operator is as follows:

if [ -e /path/to/file ] ; then
echo “File exists”
else
echo “File does not exist”
fi

We can do this in one command.

[ -e /path/to/file ] && echo “FILE exists.” || echo “File does not exist”

 

Check if a File Exists Using  -f option in bash if statement

The third method we will discuss is using the  -f option in if statement. The -e option checks if the file path exists, while the -f option checks if the file path exists and if it is a regular file. The syntax for these operators are as follows:

if [-f /path/to/file ] ; then
echo “File exists”
else
echo “File does not exist”
fi

we can do this in one command line.
[ -f /path/to/file ] && echo “FILE exists.” || echo “File does not exist”

 

File test operators in bash

The test command includes the following FILE operators that allow you to test for particular types of files:

  • -d FILE FILE exists and is a directory.
  • -e FILE FILE exists.
  • -r FILE FILE exists and the read permission is granted.
  • -s FILE FILE exists and it’s size is greater than zero (ie. it is not empty).
  • -w FILE FILE exists and the write permission is granted.
  • -x FILE FILE exists and the execute permission is granted.

 

As you can see, there are many different ways to check if a file exists in Bash. Each of these methods has its own benefits and drawbacks, so it is important to understand them all before deciding which one to use. In general, the “test” command is the simplest and most reliable way to check if a file exists. However, the other methods can be useful in certain situations. Thanks for reading!