[TriLUG] RE with bash

Joseph Mack NA3T jmack at wm7d.net
Mon Oct 23 11:55:59 EDT 2006


I need a script to find directories in a tree and cd to 
them. Some of the directory names have blanks in them, eg 
"Flash Player". So if a directory has the subdirectories

./Flash Player
./foo

then a command like


IFS=./; for directory in `find ./ -type d | xargs`

will give
directory="Flash Player "
then
directory="foo "

in bash to cd to "Flash Player " I have to cd to "Flash\ 
Player ". I can substitute the first blank with

directory=${directory//\ /\\}

but there is a 2nd blank in the directory name and I get

directory="Flash\ Player\ "

In this construct the $ symbol does not work as an EOL 
symbol, so I can't selectively remove the last blank.
I tried substituting the blanks between [:alphanum:] 
[:alphanum:] but there doesn't seem to be any way to replace 
the char you matched (here the 'h' and the 'P') as you can 
in perl.

Any ideas on changing "Flash Player " to "Flash\ Player"
(or "Flash\ Player ") in a bash script?

Thanks Joe

-- 
Joseph Mack NA3T EME(B,D), FM05lw North Carolina
jmack (at) wm7d (dot) net - azimuthal equidistant map
generator at http://www.wm7d.net/azproj.shtml
Homepage http://www.austintek.com/ It's GNU/Linux!



More information about the TriLUG mailing list