[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Bash command -cut (oops last message truncated)
- From: "Mikkel L. Ellertson" <mikkel infinity-ltd com>
- To: For users of Fedora Core releases <fedora-list redhat com>
- Subject: Re: Bash command -cut (oops last message truncated)
- Date: Sun, 17 Sep 2006 20:09:23 -0500
neidorff wrote:
> Hi,
>
> This baffles me, but should be very simple.
>
> I have a directory with names of audio files. I want to convert from
> one audio format to another. No problem there.
>
> I want to create a script to do handle the change of file extension
> chores. I came up with this:
>
> #!/bin/bash
> FILES=$(ls *.flac | cut -f1 -d\.)
> for i in $FILES; do
> echo converting: $i
> flac -sd $i.flac -o wav/$i.wav
> done
>
> The first file is named "01 Introduction.flac" and the problem that I
> have is that the first time I go through the for loop, "i" contains "01"
> the next time "i" contains "Introduction". Since I set the delimiter
> (with the -d option in cut) to "." (escaped) why am I not having "i"
> contain "01 Introduction" the first time through the for loop? What
> obvious thing am I missing here?
>
> Thanks,
>
> Mark
>
Part of the problem is the spaces in the file names. The loop is
treating spaces as delimiters for the data in $FILES. You may find
using basename works better for this application.
for i in *.flac ; do
name=$( basename "$i" .flac )
echo Converting $name
flac -sd "$name.flac" -o "wav/$name.wav"
done
a slightly different way to do it would be:
for i in *.flac ; do
name=$( basename "$i" .flac ).wav
echo Converting $name
flac -sd "$i" -o "wav/$name"
done
In ether case, you have to enclose the file name in quotes because
of the spaces.
Mikkel
--
Do not meddle in the affairs of dragons,
for thou art crunchy and taste good with Ketchup!
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]