Bash Scripting - How to check If File Exists - GeeksforGeeks

28 Nov, 2021
In this article, we will write a bash script to check if files exist or not. 
test [expression]
[ expression ]
[[ expression ]]
Here, in expression, we write parameter and file name. Let us see some parameters that can be used in the expression: –
–f:  It returns True if the file exists as a common ( regular ) file.
-d: it returns True if directory exists.
-e: It returns True if any type of file exists.
-c: It returns True if the character file exists.
-r: It returns True if a readable file exists.
–w: It returns True if a writable file exists.
-x: It returns True if an executable file exists.
-p: It returns True if the file exists as a pipe.
-S: It returns True if the file exists as a socket.
-s: it returns True if a file exists and the size of the file is not zero.
-L: It returns True if the file of symbolic link exists.
-g: It returns True if the file exists and hold set group id flag is set..
-G: It returns True if the file exists and holds the same group id that is in process.
 -k: It returns True if the file exists and the sticky bit flag is set.
Now, there are some more parameters for comparison between the two files.
-ef: It returns True if both files exist and indicate the same file. 
Example : 
FirstFile -ef SecondFile
-nt: It returns True if FirstFile is newer than Secondfile.
Example :
FirstFile -nt FileOld
-ot: It returns True if FirstFile is older than SecondFile.
Example: 
FirstFile -ot SecondFile
[ expression ]: First, create a file named ” FirstFile.sh ” and write the following script on it
#!/bin/bash

# using [ expression ] syntax and in place 
# of File.txt you can write your file name 
if [ -f "File.txt" ]; 
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi
Now save and run the file using the following command
$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh
Output : 
Output
Note: As the ” File.txt ” is present in the system. So, it printed ” File is exists “.
test [expression]: Now, modify the above script in ” FirstFile.sh ” as follows
#!/bin/bash

# using test expression syntax and in place 
# of File2.txt you can write your file name
if test -f "File2.txt" ;
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi
Now, again save and run the file using the following command
$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh
Output :
Output
Note: As the ” File2.txt ” is not present in the system. So, it printed ” File is not exist “.
[[ expression ]]: Again modify the above script in ” FirstFile.sh ” as follows
#!/bin/bash

# using [[ expression ]] syntax and in place 
# of File3.txt you can write your file name
if test -f "File3.txt" ;
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi
Now, again save and run the file using the following command
$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh
Output :
Output
Note: As the ” File3.txt ” is present in the system. So, it printed ” File is exist “.
Using -d parameter: Create a file named ” FirstDir.sh ” and write the following script in it
!/bin/bash
if [[ -d "GFG_dir" ]] ; # Here GFG_dir
 is directory and in place of GFG_dir you can write your Directory name
then
echo "Directory is exist" # If GFG_dir exist then it will be printed
else
echo "Directory is not exist" # If GFG_dir is not exist then it will be printed
fi
Now Save and run the file using the following command
$ chmod +x ./FirstDir.sh
$ ./FirstDir.sh
Output :
Output
Note: As the ” GFG_dir ” is present in the system. So, it printed ” Directory is exist “.
Similarly, you can use -f , -e , -w , -r , -c ,etc. ( according to their uses ) in place of -d for checking the existence of different types of files.
Using -nt parameter
Create a file name ” Comparison_File.sh ” and write the following script 
#!/bin/bash

# New_file.txt and Old_File.txt are names of two files.
if [[ "New_File.txt" -nt  "Old_File.txt" ]] ;
then

# This will be printed if Condition is true
echo "New_File.txt is newer than Old_File.txt" 
else

# This will be printed if Condition is False
echo "New_File.txt is not newer than Old_File.txt"
fi
Now Save and run the file using the following command
$ chmod +x ./Comparison_File.sh
$ ./Comparison_File.sh
Output :
Output
Note: As both files are present in the system and ” New_File.txt ” is newer than ” Old_File.txt “
Create a file named ” Check_Exist.sh ” and write the following script in it 
#!/bin/bash

# using ! before -f parameter to check if 
# file does not exist
if [[ ! -f "GFG.txt" ]] ;
then

# This will printed if condition is True
echo "File is not exist"
else

# This will be printed if condition if False
echo "File is exist"
fi
Now Save and run the file using the following command
$ chmod +x ./Check_Exist.sh
$ ./Check_Exist.sh
Output :
Output
Note:  ” GFG.txt ” is not present in the system. So, it will print “File is not exist”
Create a file named ” Geeks_File.sh ” and write the following script in it
#!/bin/bash

# If File exist then first statement will be
# printed and if it is not exist then 2nd
# statement will be printed.
[ -f "GFG_File.txt" ] && echo "File is exist" || echo "File is not exist"
Now Save and run the file using the following command
$ chmod +x ./Geeks_File.sh
$ ./Geeks_File.sh
Output : 
Output
Note: As the ” GFG_File.txt ” is present in the system. So, it printed ” File is exist “.
Bash-Script
Picked
Linux-Unix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
scp command in Linux with Examples
nohup Command in Linux with Examples
mv command in Linux with examples
Thread functions in C/C++
Docker - COPY Instruction
chown command in Linux with Examples
nslookup command in Linux with Examples
SED command in Linux | Set 2
Named Pipe or FIFO with example C program
uniq Command in LINUX with examples