Как заменить пробелы в имени файла?

Я попробовал это следующим образом:

rename 'bla bla .txt' blabla.txt

Но это не работает, какой синтаксис для этого случая правильный?

8
задан 26 August 2016 в 02:26

3 ответа

Вы не должны использовать rename для переименования всего одного файла использовать mv(1) вместо этого.

Далее, для выхода из пробела снабдите префиксом его a \:

"Ubuntu One"Ubuntu\ One

Ваша команда была бы

mv bla\ bla.txt blabla.txt
  • обратная косая черта говорит удару, что следующий символ так или иначе специален, например. \a для 'звонка', \ для литерального пространства и так далее

    посмотрите man ascii(7) для больше

С другой стороны, так как Вы теперь используете корректную команду mv, можно заключить имя файла в кавычки, если существует много пробелов:

mv "bla    bla.txt" blabla.txt

(Это было бы bla\ \ \ \ bla.txt в завершенной форме)

  • В ударе заключенные в кавычки строки (одинарные или двойные кавычки) рассматривают как отдельный аргумент, тогда как неупомянутые строки будут разделены на несколько аргументов, как это:

    • ["mv", "bla", "bla.txt", "blabla.txt", ]

    и mv ожидает:

    • ["mv", "source", "destination", ]
  • Примечание: ввод 'mv' и первые несколько символов имени файла и нажатие TAB дадут Вам завершенную версию имени файла, делая переименование быстрого и легкого.


rename используется, чтобы пакетно обработать переименование файлов с помощью регулярного выражения, как продемонстрировано в примере из его страницы справочника:

rename 's/\.bak$//' *.bak

Лишить любое происшествие .bak (в конце строки [$]) изо всех файлов, соответствующих "*.bak".

15
ответ дан 26 August 2016 в 02:26

rename - это специализированная команда для массового переименования. Интуитивно, то, что мы обычно называем «переименованием», на самом деле является «движением» к новому имени:

mv 'bla bla .txt' blabla.txt
0
ответ дан 26 August 2016 в 02:26
rename "s/\s//g" "bla bla.txt"

s - команда sed Substitute.

\ s для whiteSpace

Вы заменяете ничем. Остальная строка замены идет после второй косой черты.

g для Global, то есть заменяет каждый экземпляр. Пропуск g заменяет только первый экземпляр.


Эта команда заменит пробелы во всех файлах подчеркиванием:

rename "s/\s/_/g" *
0
ответ дан 26 August 2016 в 02:26

Другие вопросы по тегам:

Похожие вопросы: