[sf-lug] bash: identifying directories
Tyler Trafford
ttrafford at gmail.com
Sat Jun 7 15:43:17 PDT 2008
Clyde Jones wrote:
> On Sat, Jun 7, 2008 at 11:37 AM, Asheesh Laroia <asheesh at asheesh.org> wrote:
> > On Tue, 3 Jun 2008, Matt Price wrote:
> >
> >> another little scripting question:
> >>
> >> i'd like this tiny script i'm writing to scan the current directory,
> >> identify the subdirectories, and then do something in each of them. so
> >> in pseudocode:
> >>
> >> [find dirs]
> >>
> >> for DIR in $dirs ; do
> >> cd $DIR
> >> [do some stuff]
> >> cd ..
> >> done
> >
> > As MP suggested, you use "find -type d" if you really want just
> > directories. But if you do that, you're going to end up accidentally sad
> > if there are spaces in their filenames, or intentionally careful to avoid
> > that problem.
> >
>
> True - that is the purpose of setting the $IFS at the top of my script
> [1], that makes bash use the carriage return as a field delimiter
> instead of spaces plus carriage returns (you could set it to anything
> you want; tabs, commas, colons etc).
>
> However Michael correctly points out that bash will allow you to have
> a carriage return as *part* of the name (like the fscking "Icon<cr>"
> name on Macs), my script will specifically miss those directories.
'find' can return a zero delimited list, and then you could set
IFS=$'\0', right?
\0 isn't a valid character in a filename, is it?
--
Tyler Trafford
A sect or party is an elegant incognito devised to save a man from
the vexation of thinking.
-- Ralph Waldo Emerson, Journals, 1831
More information about the sf-lug
mailing list