* Stephan Sauerburger > This is a general shell-scripting question: > > In a for loop which runs through all files, as in: > > for file in `ls` > do > #stuff > done > > How do I have it make sure it iterates file-by-file? The following example, to play > all > mp3s in the current directory: > > for file in `ls` > do > mpg123 $file > done > > ...will do just a fine job, so long as none of the file names have any > spaces in them. If my directory contained:
The simple and correct solution to just this question is not to use `ls`, but *: for file in * do mpg123 "$file" done Note also that you need to quote $file. However, you get anyway into all sorts of trouble if there are other files, not to say directories in your directory. A very failsafe variant is to use find: find . -type f -print0 | xargs -0 mpg123 -- Jon Haugsand, [EMAIL PROTECTED] http://www.norges-bank.no -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]