I’ve already written a small tutorial about finding out if a file exists or not under Linux / UNIX bash shell. However, couple of our regular readers like to know more about a directory checking using if and test shell command.
General syntax to see if a directory exists or not
[ -d directory ]
OR
test directory
See if a directory exists or not with NOT operator:
[ ! -d directory ]
OR
! test directory
Find out if /tmp directory exists or not
Type the following command:
$ [ ! -d /tmp ] && echo 'Directory /tmp not found'
OR
$ [ -d /tmp ] && echo 'Directory found' || echo 'Directory /tmp not found'
Sample Shell Script to gives message if directory exists
Here is a sample shell script:
#!/bin/bash DIR="$1" if [ $# -ne 1 ] then echo "Usage: $0 {dir-name}" exit 1 fi if [ -d "$DIR" ] then echo "$DIR directory exists!" else echo "$DIR directory not found!" fi
🐧 Please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
- RSS feed or Weekly email newsletter
- Share on Twitter • Facebook • 7 comments... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
#!/bin/bash
# dirtest.bash – Demo script by nixCraft under GPL v2.x+
# ——————————————————-
dir=”$1″
[ $# -eq 0 ] &if [ -d “$dir” -a ! -h “$dir” ]
then
echo “$dir found and setting up new Apache/Lighttpd/Nginx jail, please wait…”
# __WWWJailSetup “cyberciti.biz” “setup”
else
echo “Error: $dir not found or is symlink to $(readlink -f ${dir}).”
fi
easier method:
ls -d /some/carzy/directory/does/it/exist
ls: cannot access /some/carzy/directory/does/it/exist: No such file or directory
Helps me a lot !
Thanks for posting..
i need to print the file names of all files having .txt extension of a given directory after converting to uppercase letters. The input (directory name) should be given as command line argument. The script will also check whether sufficient arguments are passed or not and whether the argument is a directory or not
i tried using this code
if [ -f $filename ]
tr “[a-z]” “[A-Z]” <$filename
but i dint get output
Dear Friends,
We can do the same thing to check a file exist or not by modifying the “if” loop like the following.
!/bin/bash
FILE=”$1″
if [ $# -ne 1 ]
then
echo “Usage: $0 {file-name}”
exit 1
fi
if [ -f “$FILE” ]
then
echo “$FILE file exists!”
else
echo “$FILE file not found!”
fi
u can use test -f to check whether filename exists or not
u can use test -d to check whether directoryname exists or not
Returns “zero” if exists and “one” if doesn’t exist.
# [ -f /path/to/dir/file_name ] && echo “File Found” || echo “File not found”