Это в основном то, что написано на крышке, для обоих.
mvстандартная утилита для перемещения одного или нескольких файлов к заданной цели. Его можно использовать для переименования файла, если нужно переместить только один файл. Если их несколько, mvработает , только если целью является каталог, и перемещает туда файлы.
Поэтому mv foo barбудет либо перемещать файл fooв каталог bar(если он существует), либо переименовывать fooв bar(если barон не существует или не является каталогом). mv foo1 foo2 barпросто переместит оба файла в каталог bar, или жаловаться, если barэто не каталог.
mvвызовет rename()функцию библиотеки C для перемещения файлов, и если это не сработает (они перемещаются в другую файловую систему), он скопирует файлы и удалит оригиналы.
Если все, что у вас есть, mvи вы хотите переименовать несколько файлов, вам придется использовать цикл оболочки. Есть целый ряд вопросов о том , что здесь на сайте, смотрите , например , это , это , и другие .
С другой стороны, различные renameутилиты переименовывают файлы по отдельности.
renameОт Util-Linux , который вы упоминаете делает простую строку замены, например , rename foo bar *изменится foobarна barbar, и asdffooна asdfbar. Это не , однако, принимать регулярное выражение!
Утилита переименования Perl ( или различные ее экземпляры ) использует выражение Perl для преобразования имен файлов. Скорее всего, будет использоваться команда, где шаблон является регулярным выражением.s/pattern/replacement/
Как переименование util-linux, так и переименование Perl могут быть использованы для одновременного перемещения файлов в другой каталог, путем внесения соответствующих изменений в имя файла, но это немного неудобно. Ни один не делает больше, чем вызов rename()файлов, поэтому переход с одной файловой системы на другую не работает.
Что касается того, что у renameвас есть, это может зависеть от вашего дистрибутива и / или того, что вы установили. Большинство из них поддерживают rename --version, поэтому используйте это, чтобы определить, какой у вас есть.
type -a renameаrename --version?