I’m trying to write a shell which can print the directories & files in it. I want to add number (for loop) to files in it, but having issues – can you experts look into it and help me out? Thanks
JavaScript
x
#!/bin/sh
BDIR=$1
rm dir.log
counter(){
for file in "$1"/*; do
if [ -d "$file" ]; then
echo "$file"
counter "$file"
fi
done
}
counter "$BDIR" > dir.log
while read -r line; do
echo "n Directory Name => $line"
echo " This Directory has following File in it...."
pfile=`ls -l $line/ | awk 'NR>1{print " ==> " $9;}'`
cnt=`ls -l $line/ | awk 'NR>1{print $9;}' | wc -l`
for i in $cnt; do
echo "$i. $pfile"
done
done < dir.log
### Output
$ ./dr5.sh /home/test
Directory Name => /home/test/scripts
This Directory has following File in it....
3. ==> d_name.sh ----------> should have 1
==> test1 -------------> should have 2
==> test2 -------------> should have 3
Directory Name => /home/test/test
This Directory has following File in it....
1. ==> one
Directory Name => /home/test/test/one
This Directory has following File in it....
1. ==> t.sh
Advertisement
Answer
Solved – Updated while loop with following – was simple than anticipated 🙂
JavaScript
cd $line
ls -l | awk 'NR>1{print " => " $9}' > cnt.txt
cat --number cnt.txt