ubuntu11.10でカレントディレクトリのファイル名に含まれた複数のスペースを_(アンダースコア)に変換する方法


ubuntu11.10でカレントディレクトリのファイル名に含まれた複数のスペースを_(アンダースコア)に変換する方法についてご教授頂きたいです。変換したいファイルはカレントディレクトリに××
×× ××（××は英数字）のような名前で複数あります。  
hoge.shというシェルスクリプト中でrenameコマンドを実行しているのですが、

[code]

    $ cat hoge.sh
    #!/bin/sh
    
    rename 's/ /_/;' ./*
    
[/code]

下記のようなエラーが出てしまう状態です。

[code]

    $ ./hoge.sh
    Unsuccessful stat on filename containing newline at /usr/bin/rename line 59.
    
[/code]




ファイル名に改行が含まれていて、`rename` コマンドがそれを扱えないのかも知れません。  
以下のように、改行も `_` に変換するとどうでしょうか。

[code]

    rename 's/[ \n\r]/_/g' ./*
    
[/code]

改行はそのままにしたい場合は、例えば bash なら以下のような方法があります。

[code]

    for file in ./*; do mv -i "$file" "${file// /_}"; done
    
[/code]




ファイル名に改行が含まれていて、`rename` コマンドがそれを扱えないのかも知れません。  
以下のように、改行も `_` に変換するとどうでしょうか。

[code]

    rename 's/[ \n\r]/_/g' ./*
    
[/code]

改行はそのままにしたい場合は、例えば bash なら以下のような方法があります。

[code]

    for file in ./*; do mv -i "$file" "${file// /_}"; done
    
[/code]

