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

```

    $ cat hoge.sh
    #!/bin/sh
    
    rename 's/ /_/;' ./*
    
```

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

```

    $ ./hoge.sh
    Unsuccessful stat on filename containing newline at /usr/bin/rename line 59.
    
```
CC BY-SA 3.0
2017-06-22T11:24:44.317
35815
2017-06-22T16:10:11.127
19297
question
linux ubuntu
ubuntu11.10でカレントディレクトリのファイル名に含まれた複数のスペースを_(アンダースコア)に変換する方法
パターンの指定部分に恐らく;(セミコロン)は不要なのと、スペースが複数含まれるケースを考慮すると  
`$ rename "s/ /_/g" ./*`
CC BY-SA 3.0
2017-06-22T11:52:13.430
35816
2017-06-22T11:52:13.430
3060
35815
answer
ファイル名に改行が含まれていて、`rename` コマンドがそれを扱えないのかも知れません。  
以下のように、改行も `_` に変換するとどうでしょうか。

```

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

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

```

    for file in ./*; do mv -i "$file" "${file// /_}"; done
    
```
CC BY-SA 3.0
2017-06-22T16:10:11.127
35819
2017-06-22T16:10:11.127
3054
35815
answer