Date: Sat, 12 Dec 1998 20:00:44 -0800 (PST) From: Evgeny Roubinchtein <eroubinc@u.washington.edu> To: "James A. Taylor" <jataylor@lundahl.com> Cc: freebsd-questions@FreeBSD.ORG Subject: Re: Recursing directories? Message-ID: <Pine.A41.4.05.9812121958030.100006-100000@dante20.u.washington.edu> In-Reply-To: <199812111943.NAA05604@horton.iaces.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 11 Dec 1998, Paul T. Root wrote:
>In a previous message, James A. Taylor said:
>> First of all thanks to Paul for his help with the mv command.
>>
>> Is it possible to have a shell script recurse a directory tree?
>> Still the same situation as my last email I have a directory tree
>> with .shtml files. I want to recurse the directory tree renaming
>> each .shtml to a .html file. Paul sent me the following script that
>> allows me to mv all .shtml in a single directory:
>>
>> #!/bin/sh
>> for i in *.shtml
>> do
>> j=`basename $i .shtml`
>> mv $i $j.html
>> done
>>
>> This script works and changes all of the .shtml in the current
>> directory. Is their a way I can get the script to recurse my
>> directory tree?
>
>sure, name it nos (or some such).
>
>#!/bin/sh
>
>for i in *
>do
> if [ -d $i ];then
> cd $i
> nos
> cd ..
> else
> echo $i |grep ".shtml$" >/dev/null
> if [ $? -eq 0 ]; then
> j=`basename $i .shtml`
> mv $i $j.html
> fi
> fi
>done
>
>
>Ok, that's a little crude but it works.
>Be sure to have the script in your path and
>be executable.
Another solution along the same lines is:
---%<----
#!/bin/sh
action()
{
# Put the code you would like to run in each subdir in the body of this
# function (below this comment, but above the next "}")
echo "I am in `pwd`"
}
make_dir_list()
{
unset mydirs
for file in * ; do
[ -d $file ] && mydirs="$mydirs $file"
done
echo $mydirs
}
traverse()
{
if [ $# -eq 0 ] ; then
action
return
else
# visit the root first (in pre-order)
# can also move the action line to after the for loop to traverse in post-order, sort of
action
for subdir ; do
cd $subdir
traverse `make_dir_list`
cd ..
done
fi
}
traverse `make_dir_list`
-----%<---
--
Evgeny Roubinchtein, eroubinc@u.washington.edu
...................
BOMB: Burn Out Memory Banks
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.A41.4.05.9812121958030.100006-100000>
