Re: Bash command -cut (oops last message truncated)

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


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"

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"

In ether case, you have to enclose the file name in quotes because
of the spaces.


  Do not meddle in the affairs of dragons,
for thou art crunchy and taste good with Ketchup!

[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux