Како користити команду за преименовање на Линуку

Ухватите се укоштац са преименовањем датотека у свету Линук-а и дајте мв—и себи—одмор. Преименовање је флексибилно, брзо, а понекад чак и лакше. Ево упутства за ову моћну команду.

Шта није у реду са мв?

Нема ништа лоше у мв . Команда ради добар посао, и налази се у свим дистрибуцијама Линука, у мацОС-у и другим оперативним системима сличним Уник-у. Тако да је увек на располагању. Али понекад вам је потребан само булдожер, а не лопата.

Команда мв има сврху у животу, а то је премештање датотека. Срећан је споредни ефекат што се може користити за премештање постојеће датотеке у нову датотеку, са новим именом. Нето ефекат је преименовање датотеке, тако да добијамо оно што желимо. Али мв није наменски алат за преименовање датотека.

Преименовање једне датотеке помоћу мв

Да бисте користили мв за преименовање датотеке типа мв, размак, име датотеке, размак и ново име које желите да датотека има. Затим притисните Ентер.

Можете користити лс да проверите да ли је датотека преименована.

mv oldfile.txt newfile.txt
ls *.txt

Преименовање више датотека помоћу мв

Ствари постају сложеније када желите да преименујете више датотека. мв нема могућности да се бави преименовањем више датотека. Морате прибећи коришћењу неких згодних Басх трикова. То је у реду ако знате нешто средњег нивоа командне линије, али сложеност преименовања више датотека помоћу мв је у потпуној супротности са лакоћом коришћења мв за преименовање једне датотеке.

Ствари брзо ескалирају.

Рецимо да имамо директоријум са разним датотекама у њему, различитих типова. Неке од ових датотека имају екстензију „.прог“. Желимо да их преименујемо у командној линији тако да имају екстензију „.прг“.

Како да натерамо мв да то уради уместо нас? Хајде да погледамо фајлове.

ls *.prog -l

Ево једног начина да то урадите који не прибегава писању стварне датотеке Басх скрипте.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

за ф у *.прог;  до мв --

Да ли је то успело? Хајде да проверимо фајлове и видимо.

ls *.pr*

Дакле, да, успело је. Сада су све датотеке „.прг“, а у директоријуму нема „.прог“ датотека.

Шта се управо догодило?

Шта је та дуга команда заправо урадила? Хајде да га разбијемо.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

Први део покреће петљу која ће обрадити сваки „.прог“ фајл у директоријуму, редом.

  Како можете опоравити избрисане ТикТок видео записе

Следећи део говори шта ће обрада урадити. Користи мв за премештање сваке датотеке у нову датотеку. Нова датотека ће бити именована именом оригиналне датотеке искључујући део „.прог“. Уместо тога ће се користити нова екстензија „.прг“.

Мора постојати једноставнији начин

Највероватније. То је команда за преименовање.

преименовање није део стандардне Линук дистрибуције, тако да ћете морати да га инсталирате. Такође има различито име у различитим породицама Линук-а, али сви раде на исти начин. Мораћете само да замените одговарајући назив команде у складу са укусом Линука који користите.

у дистрибуцијама изведеним из Убунту-а и Дебиан-а инсталирате преименовање овако:

sudo apt-get install rename

У дистрибуцијама изведеним из Федоре и РедХат-а инсталирате пренаме овако. Обратите пажњу на почетно „п“, што значи Перл.

sudo dnf install prename

Да бисте га инсталирали у Мањаро Линук користите следећу команду. Имајте на уму да се команда за преименовање зове перл-ренаме.

sudo pacman -Syu perl-rename

Урадимо то поново

И овог пута ћемо користити преименовање. Вратићемо сат уназад тако да имамо скуп „.прог“ датотека.

ls *.prog

Сада користимо следећу команду да их преименујемо. Затим ћемо проверити са лс-ом да ли је функционисало. Не заборавите да замените преименовање одговарајућим именом команде за ваш Линук ако не користите Убунту или Линук који је изведен из Дебиана.

rename 's/.prog/.prg/' *.prog
ls *.pr*

То је функционисало, сада су све „.прг” датотеке и нема више „.прог” датотека у директоријуму.

Шта се догодило овог пута?

Хајде да објаснимо то мало магије, у три дела.

Први део је име команде, преименуј (или пренаме или перл-ренаме, за друге дистрибуције).

Последњи део је *.прог, који говори преименовању да ради на свим „.прог“ датотекама.

Средњи део дефинише посао који желимо да обавимо на сваком имену датотеке. С значи замена. Први термин (.прог) је оно што ће преименовање тражити у сваком имену датотеке, а други термин (.прг) је оно чиме ће бити замењен.

Средњи део команде, или централни израз, је Перл ‘регуларни израз‘ и то је оно што команди за преименовање даје флексибилност.

Промена других делова имена датотеке

До сада смо мењали екстензије имена датотека, хајде да изменимо друге делове имена датотека.

У директоријуму се налази много датотека са изворним кодом Ц. Сви називи датотека имају префикс „сланг_“. Ово можемо проверити са лс.

ls sl*.c

Заменићемо сва појављивања „сланг_“ са „сл_“. Формат команде нам је већ познат. Ми само мењамо термин за претрагу, термин за замену и тип датотеке.

rename 's/slang_/sl_' *.c

Овог пута тражимо „.ц“ фајлове и тражимо „сланг_“. Кад год се „сланг_“ нађе у имену датотеке, он се замењује са „сл_“.

  Како претраживати више типова датотека у Филе Екплорер-у

Резултат те команде можемо да проверимо понављањем команде лс одозго са истим параметрима:

ls sl*.c

Брисање дела имена датотеке

Можемо да уклонимо део назива датотеке заменом појма за претрагу ничим.

ls *.c
rename 's/sl_//' *.c
ls *.c

Из команде лс можемо видети да су све наше „.ц“ датотеке на врху са „сл_“. Хајде да се решимо тога у потпуности.

Команда за преименовање следи исти формат као и раније. Тражићемо „.ц“ датотеке. Термин за претрагу је „сл_“, али нема термина за замену. Две обрнуте косе црте без ичега између њих не значе ништа, празан низ.

ренаме ће обрадити сваки „.ц“ фајл заузврат. Тражиће „сл_“ у имену датотеке. Ако се пронађе, ништа неће бити замењено. Другим речима, термин за претрагу се брише.

Друга употреба команде лс потврђује да је префикс „сл_“ уклоњен из сваке „.ц“ датотеке.

Ограничите промене на одређене делове имена датотека

Хајде да користимо лс да погледамо датотеке које имају стринг „парам“ у имену датотеке. Затим ћемо користити преименовање да заменимо тај стринг стрингом „параметар“. Још једном ћемо користити лс да видимо какав је ефекат команда за преименовање имала на те датотеке.

ls *param*
rename 's/param/parameter' *.c
ls *param*

Пронађене су четири датотеке које имају „парам“ у називу датотеке. парам.ц, парам_оне.ц и парам_тво.ц сви имају „парам“ на почетку свог имена. тхирд_парам.ц има „парам“ на крају свог имена, непосредно пре екстензије.

Команда преименовања ће тражити „парам“ свуда у имену датотеке и заменити га са „параметар“ у свим случајевима.

Друга употреба команде лс нам показује да се управо то догодило. Без обзира да ли је „парам“ био на почетку или на крају назива датотеке, замењен је са „параметар“.

Можемо користити Перл-ове метакарактере да прецизирамо понашање средњег израза. Метазнакови су симболи који представљају позиције или низове знакова. На пример, ^ значи „почетак стринга“, $ значи „крај низа“ и . означава било који појединачни знак (осим знака новог реда).

Користићемо почетак метазнака стринга ( ^ ) да ограничимо претрагу на почетак имена датотека.

ls *param*.c
rename 's/^parameter/value/' *.c
ls *param*.c
ls value*.c

Датотеке које смо раније преименовали су наведене и можемо видети да се стринг „параметар“ налази на почетку три имена датотека и на крају једног од имена датотека.

Наша команда за преименовање користи метазнак почетка реда (^) пре термина за претрагу „параметар“. Ово говори преименовању да сматра да је термин за претрагу пронађен само ако се налази на почетку назива датотеке. Стринг за претрагу „параметар“ биће занемарен ако се налази негде другде у имену датотеке.

  Како онемогућити ИПв6 на Убунту-у

Проверавањем помоћу лс, можемо видети да име датотеке које је имало „параметар“ на крају назива датотеке није измењено, али три имена датотека која су имала „параметар“ на почетку својих имена су имала стринг за претрагу замењен заменом израз „вредност“.

Моћ преименовања лежи у моћи Перла. Све од моћ Перла стоји вам на располагању.

Претраживање са груписањима

преименовање има још трикова у рукаву. Хајде да размотримо случај када можда имате датотеке са сличним низовима у њиховим именима. Нису потпуно исти низови, тако да једноставна претрага и замена овде неће радити.

У овом примеру користимо лс да проверимо које датотеке имамо које почињу са „стр“. Има их два, стринг.ц и странгле.ц. Можемо преименовати оба низа одједном користећи технику која се зове груписање.

Централни израз ове команде за преименовање ће тражити низове у именима датотека који имају низ знакова „стри“ или „стра“ где те секвенце одмах прати „нг“. Другим речима, наш термин за претрагу ће тражити „стринг“ и „странг“. Термин замене је „банг“.

ls str*.c
rename 's/(stri|stra)ng/bang/' *.c
ls ban*.c

Коришћење лс по други пут потврђује да је стринг.ц постао банг.ц, а странгле.ц је сада бангле.ц.

Коришћење превода са преименовањем

Команда преименовања може да изврши радње над именима датотека које се називају преводи. Једноставан пример превода би био да се скуп имена датотека упише великим словима.

У наредби за преименовање у наставку приметите да не користимо с/ за покретање централног израза, ми користимо и/. Ово говори преименовању да не вршимо замену; вршимо превод.

Термин аз је Перл израз који означава све знакове малих слова у низу од а до з. Слично, термин АЗ представља сва велика слова у низу од А до З.

Централни израз у овој команди могао би се парафразирати као „ако се било које од малих слова од а до з нађе у имену датотеке, замените их одговарајућим знаковима из низа великих знакова од А до З.“

Да бисте наметнули називе датотека свих „.прг“ датотека великим словима, користите ову команду:

преименуј ‘и/аз/АЗ/’ *.прг

ls *.PRG

Команда лс нам показује да су сва имена датотека „.прг“ сада написана великим словима. У ствари, да будемо стриктно тачни, то више нису „.прг“ датотеке. То су „.ПРГ“ датотеке. Линук је осетљив на велика и мала слова.

Можемо обрнути ту последњу команду тако што ћемо променити позицију аз и АЗ чланова у централном изразу.

преименуј ‘и/АЗ/аз/’ *.ПРГ

ls *.prg

Ви (не|не) научите Перл за пет минута

Упознавање са Перл-ом је добро потрошено време. Али да бисте почели да користите могућности за уштеду времена команде за преименовање, не морате уопште да имате много знања о Перлу да бисте остварили велике предности у снази, једноставности и времену.