Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Jan 2018 15:55:28 +0700
From:      Victor Sudakov <vas@mpeks.tomsk.su>
To:        Ultima <ultima1252@gmail.com>
Cc:        Polytropon <freebsd@edvax.de>, FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   Re: Convert .flac and .ape to mp3
Message-ID:  <20180106085528.GA33117@admin.sibptus.transneft.ru>
In-Reply-To: <CANJ8om7LJqAG%2BX0dn1JDZn1WYJtxZtX9SAK2yQU74om7-SSQRQ@mail.gmail.com>
References:  <20180104163421.GA15692@admin.sibptus.transneft.ru> <20180104175156.440fa0c2.freebsd@edvax.de> <20180106063934.GA32231@admin.sibptus.transneft.ru> <CANJ8om7LJqAG%2BX0dn1JDZn1WYJtxZtX9SAK2yQU74om7-SSQRQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Ultima wrote:
> > So eventually I will need to write a script to process all the *.ape
> > files, probably with bchunk. Which brings the following question. If
> > the file and directory names have spaces in them, a simple loop like
> > this:
> >
> > #!/bin/sh
> > for i in `find . -iname '*.ape'`
> > do
> >   do_something $i
> > done
> >
> > breaks on spaces.
> >
> > What is the sh magic to handle such filenames?

> do_something "$i"

Nope, these quotes make no difference, they are too late.

The problem is in the "for " line, it cannot differentiate spaces _in_
filenames and _between_ filenames. Look:

$ touch "this is a long file name.ape"
$ ~/bin/ape2mp3.sh
+ find . -iname '*.ape'
+ echo ./this
./this
+ echo is
is
+ echo a
a
+ echo long
long
+ echo file
file
+ echo name.ape
name.ape
$ 

I'm sure the solution exists, it must be a very common case.


-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
AS43859



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180106085528.GA33117>