I'm trying to create a script to count the number of hidden and non-hidden files in a folder where the script is run. However, I run into an issue where I cannot increment variables.
#!/bin/bash
#A simple script to count the number of hidden and non-hidden files in the folder this script is run in
#Variables to store the number of hidden and non-hidden files and folders
#Variables with a 'h' at the end represent hidden items
files=0
fileh=0
#List all files and folders
#Use grep to folder entries beginning with '-', which are files
#Return the 9th word in the string which is the filename
#Read the filename into the variable 'fls'
ls -al | grep ^- | awk '{print $9}' | while read fls
#If the filename begins, with a dot, it is a hidden file
do
if [[ $fls == .* ]]
then
#Therefore increment the number of hidden files by one
let fileh++
else
#Else, increment the number if non-hidden files by one
let files++
fi
done
#Print out the two numbers
echo $files 'non-hidden files'
echo $fileh 'hidden files'
#When I run this script, the output is always zero for both variables
#I don't know why this doesn't work?!
The output of this script is as follows:
jai@L502X~$ ./script.sh
0 non-hidden files
0 hidden files
let "fileh++"