diff options
Diffstat (limited to 'examples/functions/recurse')
-rw-r--r-- | examples/functions/recurse | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/examples/functions/recurse b/examples/functions/recurse deleted file mode 100644 index f69cd50..0000000 --- a/examples/functions/recurse +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -#From: kaz@ashi.footprints.net (Kaz Kylheku) -#Newsgroups: comp.os.linux.misc -#Subject: Re: bash question: subdirectories -#Message-ID: <slrn8a0gu9.v5n.kaz@ashi.FootPrints.net> -#Date: Tue, 08 Feb 2000 16:24:35 GMT - -#Actually it can be made to. That is to say, it is possible to code a recursive -#descender function in the bash language. Here is an example. -# -#What is nice about this is that you can embed the function into your shell -#script. The function changes the current working directory as it descends. -#So it can handle arbitrarily deep paths. Whereas paths generated by the -#find command can cause a problem when they get too long; the kernel has a -#hard limit on the length of the string passed to the open() and other -#system calls. - -#There are races; what if the directory tree is blown away during the traversal? -#The function won't be able to crawl back up using the .. link and will just -#bail. - -# Recursive Directory Traverser -# Author: Kaz Kylheku -# Date: Feb 27, 1999 -# Copyright 1999 - -# Function parameter usage: -# $1 directory to search -# $2 pattern to search for -# $3 command to execute -# $4 secret argument for passing down path - -function recurse -{ - local file - local path - - if [ "$4" = "" ] ; then - path="${1%/}/" - else - path="$4$1/" - fi - - if cd "$1" ; then - for file in $2; do - if [ -f "$file" ] || [ -d "$file" ]; then - eval "$3" - fi - done - for file in .* * ; do - if [ "$file" = "." ] || [ "$file" = ".." ] ; then - continue - fi - if [ -d "$file" ] && [ ! -L "$file" ]; then - recurse "$file" "$2" "$3" "$path" - fi - done - cd .. - fi -} - -recurse "$1" "$2" 'echo "$path$file"' |