# Check if a File Exists in a Bash Shell Script

> Use the test command or bracket syntax with the -f flag to check whether a file exists in Bash, with -d for directories, -e for both, and negation with !

**URL:** https://sentry.io/answers/determine-whether-a-file-exists-or-not-in-bash/

---

## 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`](https://en.wikipedia.org/wiki/Test_(Unix)) command-line utility:

```bash
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, `!`:

```bash
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`:

```bash
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

- [Sending Sentry Events from Bash](https://blog.sentry.io/sentry-bash/)

---

*Source: [sentry.io/answers/determine-whether-a-file-exists-or-not-in-bash/](https://sentry.io/answers/determine-whether-a-file-exists-or-not-in-bash/)*
