Hi all. I have a few directories containing wav files that have been ripped from CDs and I'm trying to write a script to invoke sox to convert them to mp3 format. The filenames have whitespaces and hyphens in them e.g. 'artist - 01 - title with many words.wav'. I tried the following script but I'm obviously doing something wrong... --------------------------------------------------------------------------------------------------------- #!/bin/bash for file in `find * -print0 | xargs --null` do { INFILE=$file OUTFILE=${file/%wav/mp3} echo "$OUTFILE" # if [ ! -e "$file" ] # then # echo "$file does not exist."; echo # else # sox "$file" "$OUTFILE" # fi # if [ $? -eq 0 ] # then # rm -f "$file" # fi } done exit 0 ------------------------------------------------------------------------------------------------- In its current form each word of each filename is treated separately i.e. xargs --null appears to have no effect at all - it is interpreting whitespace as a delimiter. If I modify the first line as follows: for file in "`find * -print0 | xargs --null`" or for file in "$(find * -print0 | xargs --null)" then I get the entire directory listing (i.e. all the filenames) concatenated into a single parameter with only the last file extension replaced. What have I missed here? I'm assuming it is something to do with the pipe or redirection via xargs that is not working as expected. BTW, I also tried this: for file in $(xargs --null -- < `find * -print0`) but then I get an "ambiguous redirect" error. Using this: for file in `xargs --null -- < `find * -print0`` gives the following errors: command substitution: line 26: syntax error near unexpected token `newline' command substitution: line 26: `xargs --null -- < ' but then produces the output I'm expecting (i.e. a list of the output file names (keeping in mind the actual processing part of the script is currently commented out) with the exception that "find" is the first entry in the list and "-print0" is the last entry in the list; somehow the variable $OUTFILE appears to be getting the values "find" and "-print0" at the beginning and end of the loop. I seem to be just going around in circles here. Any suggestions will be greatly appreciated. Thanks in advance, -- =================================================== Rodney Baker VK5ZTV rodney.baker@iinet.net.au =================================================== I have great faith in fools -- self confidence my friends call it. -- Edgar Allan Poe