[EMAIL PROTECTED] wrote:
A solution should look like this:for file in `ls -1`; do newfile=`echo "$file" | sed 's/ /_/'` echo "File is named ${file}" echo "The new file is named ${newfile}" mv "$file" "$newfile" done IHMO in the main-loop it is better to choose "ls -1", so the field separator is \n and there's only one filename in each line. The next <big> thing is to put the filename into quotations. Now a filename, even with spaces, will be interpreted as one word.
Robin, that still doesn't work right - try it and see: $echo > file\ 001 $echo > file\ 002 $ ./test.sh File is named file The new file is named file File is named 001 The new file is named 001 File is named file The new file is named file File is named 002 The new file is named 002 $ The previously referenced Bash Scripting Guide has the answer. Change the for statement to read: for file in *; do and it will work. $ ./test.sh File is named file 001 The new file is named file_001 File is named file 002 The new file is named file_002 $ -jdr- - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs
