Sentry Answers>Bash>

Determine whether a file exists or not in Bash

Determine whether a file exists or not in Bash

David Y.

The Problem

How can I determine whether a file exists in Bash? Conversely, how can I test that it does not exist?

The Solution

We can check whether a file exists using the test command-line utility:

Click to Copy
if test -f /path/to/file; then echo "File exists." fi

To check whether a file does not exist, we can negate the condition with the NOT logical operator, !:

Click to Copy
if ! test -f /path/to/file; then echo "File does not exist." fi

Because the test command is used frequently in Bash expressions, we can write it as [] rather than typing out test:

Click to Copy
if ! [ -f /path/to/file ]; then echo "File does not exist." fi

The -f flag tests whether the provided filename exists and is a regular file. To test for directories instead, we can use the -d flag. To test for both files and directories, we can use the -e flag.

More information about test can be found on its manual page, accessible by typing man test into the terminal.

Further Reading

If you’re looking to get a deeper understanding of how Bash application monitoring works, take a look at the following articles:

  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • ResourcesWhat is Distributed Tracing (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.