Це в основному те, що написано на кришці, для обох.
mv- це стандартна утиліта для переміщення одного або декількох файлів до заданої цілі. Його можна використовувати для перейменування файлу, якщо для переміщення є лише один файл. Якщо їх декілька, mvпрацює лише, якщо цільовим є каталог, і переміщує файли туди.
Так mv foo barбуде або перемістити файл fooу каталог bar(якщо він існує), або перейменувати fooв bar(якщо barйого немає або немає каталогу). mv foo1 foo2 barпросто перемістить обидва файли в каталог bar, або скаржиться, якщо barце не каталог.
mvвикличе rename()функцію бібліотеки С для переміщення файлів, і якщо це не працює (вони переміщуються в іншу файлову систему), він скопіює файли та видалить оригінали.
Якщо все, що у вас є, 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?