Ответы:
Вы не должны использовать renameдля переименования только один файл, вместо этого используйте 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, вы получите экранированную версию имени файла, что сделает переименование быстрым и простым.
renameиспользуется для пакетной обработки переименования файлов с использованием регулярного выражения, как показано в примере на его man-странице :
rename 's/\.bak$//' *.bak
Для удаления любого вхождения .bak (в конце строки [$]) из всех файлов, соответствующих "* .bak".
переименовать является специализированной командой для массового переименования. На самом деле то, что мы обычно называем «переименованием», на самом деле является «переходом» к новому имени:
mv 'bla bla .txt' blabla.txt
A=bla ; mv "$A $A .txt" blabla.txtпереместится в bla bla .txt, но A=bla ; mv '$A $A .txt' blabla.txtбудет искать файл с именем «$ A $ A .txt». Любой из них будет работать для вашего примера, хотя.
rename "s/\s//g" "bla bla.txt"
s является командой sed Substitute.
\ s для whiteSpace
Вы заменяете ничем. Остальная строка замены идет после второй косой черты.
g для Global, то есть заменить каждый экземпляр. Пропуск g заменяет только первый экземпляр.
Эта команда заменит пробельные символы подчеркиванием во всех файлах:
rename "s/\s/_/g" *