Shell Script to List Files that have Read, Write and Execute Permissions

20 Apr, 2021
In this article, We will learn how to list all files in the current directory that have Red, Write and Execute permission.
Suppose, we have the following files in our current directory :
Here, We have a total of 8 files in our current directory.  Out of 8, we have Read, Write and Execute permission on 6 files and 2 have only Read and Write permissions.
Let’s write the script for List the Files that have Read, Write and Execute Permissions
Approach :
We have to check every file in the current directory and display the name that has Read, Write and Execute permission,
To traverse through all files, we will use for loop
for file in *
Here, we are using * which represent all files in current working directory and we are storing the current file name on file variable.
Now we will check whether the chosen file is actually a file or not using if statementIf it is a file, then we will check whether it has Read, Write and Execute permission,We will use an if statement to check all permissions.If the file has all permissions then we will print the file name to the console.Close the if statement
If it is a file, then we will check whether it has Read, Write and Execute permission,
We will use an if statement to check all permissions.If the file has all permissions then we will print the file name to the console.
If the file has all permissions then we will print the file name to the console.
Close the if statement
If it is not a file, then we will close the if statement and move to the next file.
Before moving forward we will see what these operators do :
-f  $file -> returns true if file exists.
-r $file -> returns true if file has Read permission
-w $file -> returns true if file ha write permission.
-x $file -> returns true if file has Executed permission.
-a -> it is used for checking multiple conditions, same as && operator.
Below is the implementation:
# Shell script to display list of file names
# having read, Write and Execute permission
echo "The name of all files having all permissions :"
  
# loop through all files in current directory
for file in *
do

# check if it is a file
if [ -f $file ]
then

# check if it has all permissions
if [ -r $file -a -w $file -a -x $file ]
then

# print the complete file name with -l option
ls -l $file

# closing second if statement
fi

# closing first if statement
fi

done
Now, our code writing work is done but still, we can’t run our program because when we create a file in Linux, It has two permissions i.e Read and Write for the User who created the file. To execute our file, we must give the Execute permission to the file.
Assigning Execute permission to main.sh:
$ chmod 777 main.sh
Use the following command to run the script:
$ bash main.sh
Picked
Shell Script
Linux-Unix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Docker - COPY Instruction
scp command in Linux with Examples
chown command in Linux with Examples
SED command in Linux | Set 2
nohup Command in Linux with Examples
mv command in Linux with examples
chmod command in Linux with examples
Array Basics in Shell Scripting | Set 1
Introduction to Linux Operating System
Basic Operators in Shell Scripting