DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Shell Scripting (http://www.daniweb.com/forums/forum113.html)
-   -   how to recursive search of subdiretories in BASH script (http://www.daniweb.com/forums/thread6133.html)

botherguy May 18th, 2004 7:38 am
how to recursive search of subdiretories in BASH script
 
can anyone modify my code to make it recursive search of subdiretories, currently this code only can search of particular directory.


#!/bin/bash
if test $# -eq 0 ; then
echo usage: "${0##/*} [Dir name]"
exit
fi
for arg in $* ; do
if test -e $arg ; then
maxLen=0 # <= !
files=$(ls $arg) # <=
for file in $files ; do
newLen=${#file}
if [ $newLen -gt $maxLen ] ; then
maxLen=$newLen
fileName=$file
fi
done
echo "[ Direcroty ] : $arg"
echo "[ File name ] : $fileName"
echo "[ Max length ] : $maxLen"
else
echo Cannot find $arg
fi
done
#End


botherguy

liliafan Jul 12th, 2004 3:57 pm
Re: how to recursive search of subdiretories in BASH script
 
Hi there

Perhaps this thread may give you pointers on what you are trying to do, it includes code examples for a similar question a few weeks ago:
Thread on bash searching

From what you have shown wouldn't the find command be more appropriate for you though?

ie:

find . -name filename -print

That will recurusivly (sp?) search through directories finding all occurances of the file called filename.

HTH

Ben

tccummings Jul 18th, 2004 10:59 am
Re: how to recursive search of subdiretories in BASH script
 
I just had to creat a script that would recursively list files that woould equal or exceed X number of bytes with 2 arguments: the first one woould be where to start looking and the second the size to equal or exceed. For example ./test.sh /etc 5000

This is the code I used:

#!/bin/bash
#validate there are 2 arguments passed
#validate argument 1 exists and display an error if it does not
#validate argument 2 is a number and display error if not
directory=$1
size=$2
find $1 -size +$2c
if test -d $1; then directory=$1; else echo "Directory invalid"
fi
if test $size -ge 0; then size=$2; else echo "Specify a file size"
fi

ramkmaddela Oct 19th, 2009 6:25 am
recursive list of files in a given directory with length > 30
 
#!/bin/bash
if test $# -eq 0 ; then
echo usage: "${0##/*} [Dir name]"
exit
fi
echo 'Search in directory $* for the flienames with length > 30'
for arg in $* ; do
if test -e $arg ; then
maxLen=30 # <= !
files=$(ls -lR $arg | grep '[^d]' | awk '{print $9}') # <=
for file in $files ; do
newLen=${#file}
#newLen=`expr length $file`
#echo "Length of the $file : $newLen"
if [ $newLen -ge $maxLen ] ; then
#maxLen=$newLen
fileName=$file
#echo $fileName
rootdir=$arg
echo `find $rootdir -name $fileName`
echo $dir
fi
done
else
echo Cannot find $arg
fi
done
#End



Quote:

Originally Posted by botherguy (Post 28819)
can anyone modify my code to make it recursive search of subdiretories, currently this code only can search of particular directory.


#!/bin/bash
if test $# -eq 0 ; then
echo usage: "${0##/*} [Dir name]"
exit
fi
for arg in $* ; do
if test -e $arg ; then
maxLen=0 # <= !
files=$(ls $arg) # <=
for file in $files ; do
newLen=${#file}
if [ $newLen -gt $maxLen ] ; then
maxLen=$newLen
fileName=$file
fi
done
echo "[ Direcroty ] : $arg"
echo "[ File name ] : $fileName"
echo "[ Max length ] : $maxLen"
else
echo Cannot find $arg
fi
done
#End


botherguy



All times are GMT -4. The time now is 1:29 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC