Re: Fixing filenames with directories with spaces in the names

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Craig White <craigwhite@...> writes:

> 
> Should be simple and perhaps I'm tired but it's not coming to me.
> 
> In its simplest form...
> 
> for old in `cat "$FILENAME"`;do
>   echo "$old"
>   dirname "$old"
>   new="$(echo $old | sed 's/\*/\-/')"
> done
> 
> I'm trying to take out some stupid Macintosh things - in this case
> filenames with asterisks but I have others like tilde's and probably
> others that I haven't come across.
> 
> Anyway, $FILENAME has...
> 
> /tmp/New Woman In Field/*NEW woman in field.psd
> /tmp/New Woman In Field/*NEW woman in field 2.eps
> /tmp/New Woman In Field/*NEW woman in field 2.psd
> 
> and the echoes are broken with spaces like this (which of course doesn't
> work)...
> 
> /tmp/New
> /tmp
> /tmp/New
> Woman
> .
> Woman
> In
> .
> In
> Field/*NEW
> Field
> Field/-NEW
> woman
> .
> woman
> in
> .
> in
> field.psd
> 

I'm more of a c-shell guy but a "for loop" uses white space (either newline or
space) as the delimiter.  One of the other responses suggested an alternative
loop construct.  Alternatively, the find command with the appropriate commands
in either a script file or just following a -exec.  Something like:

find . -type f -exec `new = `echo {} | tr [bad chars] [replace]`; mv {} $new;
echo "old: {} new: $new" \;

The above needs lots of work but this way you don't have to visit each directory.

Cheers,
Dave

Cheers,
Dave




_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
http://lists.centos.org/mailman/listinfo/centos


[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux