Check if file exist? - Bash

To test the existence of a file in bash, we can use the test command. The test command can check file type and this way, we can compare the values.

Syntax

test -file-test-operators file-name

[ -f /etc/hosts ]

File test operators

-b FILE
	FILE exists and is block special
-c FILE
	FILE exists and is character special
-d FILE
	FILE exists and is a directory
-e FILE
	FILE exists
-f FILE
	FILE exists and is a regular file
-g FILE
	FILE exists and is set-group-ID
-G FILE
	FILE exists and is owned by the effective group ID
-h FILE
	FILE exists and is a symbolic link (same as -L)
-k FILE
	FILE exists and has its sticky bit set
-L FILE
	FILE exists and is a symbolic link (same as -h)
-O FILE
	FILE exists and is owned by the effective user ID
-p FILE
	FILE exists and is a named pipe
-r FILE
	FILE exists and read permission is granted
-s FILE
	FILE exists and has a size greater than zero
-S FILE
	FILE exists and is a socket
-t FD 
	File descriptor FD is opened on a terminal
-u FILE
	FILE exists and its set-user-ID bit is set
-w FILE
	FILE exists and write permission is granted
-x FILE
	FILE exists and execute (or search) permission is granted

Example

#!/bin/bash
file="/etc/hosts"
if [ -f "$file" ]
then
	echo "$file found."
else
	echo "$file not found."
fi

Or

[ -f /etc/hosts ] && echo "Found" || echo "Not found"

Need Help?

Do you need any help on Linux & Bash? I'm happy to help you.

Contact Me

Recent Posts

  1. Move files recursively from source to remote server - SCP Command
  2. Brief about Magento 2 cache commands
  3. Magento 2 customer account password options
  4. Enable or disable maintance mode - Magento 2
  5. Replace string in multiple files - Command line


Questions / Comments

If you found this article interesting, found errors, or just want to discuss about them, please get in touch.