[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

Reply via email to