回答:
rename1つのファイルの名前を変更するために使用するのではなく、代わりにmv(1)を使用してください。
さらに、whitepsaceをエスケープするには、プレフィックスとして\:
"Ubuntu One" → Ubuntu\ One
あなたのコマンドは
mv bla\ bla.txt blabla.txt
バックスラッシュは、次の文字が何らかの形で特殊であることをbashに伝えます。たとえば\a、「ベル」、\リテラルスペースなど
詳細については、man ascii(7)を参照してください
または、正しいコマンドを使用しているためmv、スペースが多い場合はファイル名を引用符で囲むことができます。
mv "bla bla.txt" blabla.txt
(これはbla\ \ \ \ bla.txtエスケープ形式になります)
bashでは、引用符で囲まれた文字列(単一引用符または二重引用符)は単一の引数として扱われますが、引用符で囲まれていない文字列は次のように複数の引数に分割されます。
["mv", "bla", "bla.txt", "blabla.txt", ]そしてmv期待する:
["mv", "source", "destination", ]注:「mv」と入力し、ファイル名の最初の数文字を押してを押すTABと、ファイル名のエスケープバージョンが表示され、名前をすばやく簡単に変更できます。
renamemanページの例で示されているように、正規表現を使用してファイルの名前変更をバッチ処理するために使用されます。
rename 's/\.bak$//' *.bak
「* .bak」に一致するすべてのファイルから.bak(文字列[$]の末尾)の出現をすべて取り除くため。
renameは、一括名前変更に特化したコマンドです。直感的ではありませんが、通常「名前の変更」と呼ばれるのは、実際には新しい名前への「移動」です。
mv 'bla bla .txt' blabla.txt
A=bla ; mv "$A $A .txt" blabla.txtbla bla .txtを移動しA=bla ; mv '$A $A .txt' blabla.txtますが、実際には「$ A $ A .txt」という名前のファイルを探します。どちらでもあなたの例ではうまくいきます。