From: Fernando O. <fer...@gm...> - 2010-06-28 04:51:37
|
Thanks Philip I'm under Linux (Ubuntu) Your solution worked "almost" perfect at the beginning. I did follow your instructions and I also add a couple of lines to auto make the destination folder: #!/bin/bash if [ ! -d converted/ ]; then mkdir converted/ fi for i in ./*.flac;\ do sox -S $i -r 44100 -b 16 "converted/$i";\ done My only problem was it only worked fine for "non_spaced_file_names". So I did try using "commas" this way: for i in ./"*.flac";\ but I was only getting a huge concatenated? file. Then I did try instead change the above line, add the commas to the $i this way: #!/bin/bash if [ ! -d converted/ ]; then mkdir converted/ fi for i in ./*.flac;\ do sox -S "$i" -r 44100 -b 16 "converted/$i";\ done Then got long name file support. I have to confess it: it was more "try and fail" than a very systematic approach to the solution. Still, I want to learn bash. Could you be so nice and recommend me a didactic online manual or book? Thank you very very much. Fernando On Sun, Jun 27, 2010 at 22:39, Fmiser <fm...@gm...> wrote: >> Fernando Ossandon wrote: > >> I'm just starting to use sox. >> I have been using the following to resample some 24bit 96kHz >> files to 16bit 44kHz: >> sox -S OriginalFile.flac -r 44100 -b 16 NewFile.flac >> >> Is there any way to apply that command to a batch script and >> be able to resample all files in a given folder and put the >> new ones in another folder? >> Can anyone give me an script example? (or any other advice to >> batch process the command) > > You don't mention your operating system. With a bash shell (the > most common Linux terminal) > > Do do it as a one-liner entered at the promtp: > > for i in ./*.flac;\ > do sox -S $i -r 44100 -b 16 "converted/$i";\ > done > > In this case, the shell expands "./*.flac" to be a list of > every flac file in the current directory. So make sure your > current directory is where the files are that need converting. > > Bash then steps through each of the .flac files in the list, > converts them one at a time, and puts the converted one in the > directory "converted" in the current directory. > > The "\" at the end of the line tells bash to ignore the very > next character. In this case it's the new-line, which makes it > a one-liner command even though it's four lines long... > > > To do the same sort of thing as a script _file_ > > -----------------------< cut here >-------------------------- > !#/bin/bash > > # A simple script to convert a batch of flac files. The source > # files are given as a command option. It can include > # wildcards. The destination is reletive to the current > # directory of where you were when the script was run. > # > # Example: convertflac.sh /home/Foo/audio/*.flac > > > # Set the directory you want for the converted files > OutDir=converted > > # Get the list of files from the command line, > # > # Convert the file with SoX, strip any directory data from the > # front of the input file and use that as the output filename > # putting it in OutDir > > for input in "$@" > do sox -S $input -r 44100 -b 16 "$OutDir/$(basename $input)" > done > > # The script will end when the list of input files is > # exhausted. > > -----------------------< cut here >-------------------------- > > > If you are using MS Win, a batch file is similar, but the > details of input list and output filename are different. I > can't help much there... > > -- Philip, heavy bash user. > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > Sox-users mailing list > Sox...@li... > https://lists.sourceforge.net/lists/listinfo/sox-users > |