Ako používať príkaz na premenovanie v systéme Linux

Zmierte sa so súborom premenovávania súborov vo svete Linuxu a mvdoprajte si - a sebe - odpočinok. Renameje flexibilný, rýchly a niekedy ešte ľahší. Tu je návod k tejto veliteľskej sile príkazov.

Čo je zlé na mv?

Nič sa nestalo mv. Príkaz urobí výbornú prácu a nachádza sa vo všetkých distribúciách Linuxu, v macOS a v iných operačných systémoch podobných systému Unix. Takže je vždy k dispozícii. Niekedy však potrebujete iba buldozér, nie lopatu.

mvPríkaz má zmysel života, a to je pre presun súborov. Je šťastným vedľajším účinkom, že sa dá použiť na presun existujúceho súboru do nového súboru s novým názvom. Čistým efektom je premenovanie súboru, takže dostaneme to, čo chceme. Ale mvnie je vyhradenej premenovanie súborov nástroj.

Premenovanie jedného súboru pomocou mv

Ak chcete použiť mvna premenovanie typu súboru mv, medzery, názvu súboru, medzery a nového názvu, ktorý chcete, aby súbor mal. Potom stlačte kláves Enter.

Môžete  lsskontrolovať, či bol súbor premenovaný.

mv oldfile.txt newfile.txt
je * .txt

Premenovanie viacerých súborov pomocou mv

Keď chcete premenovať viac súborov, veci sa komplikujú. mvnemá schopnosť riešiť premenovanie viacerých súborov. Musíte sa uchýliť k použitiu šikovných trikov Bash. To je v poriadku, ak poznáte nejaké stredne náročné úlohy v príkazovom riadku, ale zložitosť premenovania viacerých súborov mvna druhú je v príkrom rozpore s ľahkosťou použitia mvna premenovanie jedného súboru.

Veci sa rýchlo stupňujú.

Povedzme, že máme adresár s rôznymi súbormi rôznych typov. Niektoré z týchto súborov majú príponu „.prog“. Chceme ich premenovať na príkazovom riadku, aby mali príponu „.prg“.

Ako sa mvdo toho pustíme ? Poďme sa pozrieť na súbory.

ls * .prog -l

Existuje jeden spôsob, ako to urobiť, ktorý sa nemusí uchýliť k napísaniu skutočného súboru skriptu Bash.

pre f v * .prog; do mv - "$ f" "$ {f% .prog} .prg"

Fungovali ste? Poďme skontrolovať súbory a uvidíme.

ls * .pr *

Takže, áno, fungovalo to. Všetko sú to súbory „.prg“ a v adresári nie sú žiadne súbory „.prog“.

Čo sa práve stalo?

Čo to dlhé povel vlastne urobilo? Poďme si to rozobrať.

pre f v * .prog; do mv - "$ f" "$ {f% .prog} .prg"

Prvá časť začína slučku, ktorá bude postupne spracovávať každý súbor „.prog“ v adresári.

Ďalšia časť hovorí, čo bude robiť spracovanie . Používa sa  mvna presun každého súboru do nového súboru. Nový súbor bude pomenovaný pôvodným názvom súboru s výnimkou časti „.prog“. Namiesto toho sa použije nová prípona „.prg“.

Musí existovať jednoduchšia cesta

Rozhodne. Je to renamepríkaz.

renamenie je súčasťou štandardnej linuxovej distribúcie, takže si ju budete musieť nainštalovať. V rôznych rodinách systému Linux má tiež iný názov, všetky však fungujú rovnako. Budete musieť nahradiť zodpovedajúci názov príkazu podľa použitej príchuti Linuxu.

v distribúciách Ubuntu a Debiane inštalujete renametakto:

sudo apt-get install rename

V distribúciách Fedora a RedHat sa inštalujú prenametakto. Všimnite si začiatočné „p“, ktoré znamená Perl.

sudo dnf nainštalovať prename

Ak ho chcete nainštalovať do systému Manjaro Linux, použite nasledujúci príkaz. Upozorňujeme, že sa volá príkaz na premenovanie perl-rename.

sudo pacman -Syu perl-premenovanie

Urobme to znova

A tentokrát použijeme rename. Vrátime čas, aby sme mali súbor súborov „.prog“.

ls * .prog

Teraz ich premenujeme pomocou nasledujúceho príkazu. Potom skontrolujeme, lsči to fungovalo. renameAk nepoužívate Ubuntu alebo Linux odvodený od Debianu, nezabudnite nahradiť príslušným názvom príkazu pre svoj Linux.

premenovať 's / .prog / .prg /' * .prog
ls * .pr *

To fungovalo, teraz sú to všetko súbory „.prg“ a v adresári nezostávajú žiadne súbory „.prog“.

Čo sa stalo tento čas?

Poďme si vysvetliť tento kúsok mágie v troch častiach.

Prvá časť je názov príkazu, rename(alebo prename, alebo perl-rename, pokiaľ ide o iných distribúciách).

Posledná časť *.prog, ktorá hovorí, renamepôsobiť na všetky ".prog" súbory.

Prostredná časť vymedzuje prácu chceme byť vykonaná na každom súbore. sProstriedky nahradiť. Prvý výraz ( .prog) je to, čo renamebude vyhľadávať v každom názve súboru, a druhý výraz ( .prg) je to, čím bude nahradený.

Stredná časť príkazu alebo centrálny výraz je „regulárny výraz“ Perlu a je to, čo dáva renamepríkazu flexibilitu.

Zmena ďalších častí názvu súboru

Doteraz sme zmenili prípony súborov, upravme ďalšie časti názvov súborov.

V adresári je veľa súborov zdrojového kódu C. Všetky názvy súborov majú predponu „slang_“. Môžeme to skontrolovať pomocou ls.

je sl * .c

Chystáme sa nahradiť všetky výskyty výrazu „slang_“ výrazom „sl_“. Formát príkazu je nám už známy. Práve meníme hľadaný výraz, náhradný výraz a typ súboru.

premenovať 's / slang_ / sl_' * .c

Tentokrát hľadáme súbory „.c“ a hľadáme „slang_“. Kedykoľvek sa v názve súboru nachádza „slang_“, je nahradený „sl_“.

Výsledok tohto príkazu môžeme skontrolovať opakovaním lspríkazu zhora s rovnakými parametrami:

je sl * .c

Mazanie časti názvu súboru

Časť názvu súboru môžeme odstrániť nahradením hľadaného výrazu ničím.

ls * .c
premenovať 's / sl _ //' * .c
ls * .c

Z lspríkazu vidíme, že všetky naše súbory „.c“ majú predponu „sl_“. Zbavme sa toho úplne.

renamePríkaz nasleduje rovnaký formát ako predtým. Budeme hľadať súbory „.c“. Hľadaný výraz je „sl_“, ale neexistuje substitučný výraz. Dve spätné lomky bez toho, aby medzi nimi bolo niečo, nič neznamená, prázdny reťazec.

renamespracuje postupne každý súbor „.c“. V názve súboru sa vyhľadá „sl_“. Ak sa nájde, nebude nahradený ničím. Inými slovami, hľadaný výraz sa odstráni.

Druhé použitie lspríkazu potvrdzuje, že predpona „sl_“ bola odstránená z každého súboru „.c“.

Obmedziť zmeny na konkrétne časti názvov súborov

Poďme sa ls pozrieť na súbory, ktoré majú v názve reťazec „param“. Potom použijeme renametento reťazec na nahradenie reťazcom „parameter“. Použijeme lsešte raz, aby sme videli, aký vplyv mal renamepríkaz na tieto súbory.

ls * param *
premenovať '/ param / parameter' * .c
ls * param *

Nájdené sú štyri súbory, ktoré majú v súbore „param“. param.c, param_one.c a param_two.c majú na začiatku svojho mena „param“ . third_param.c má na konci svojho názvu „param“ , tesne pred rozšírením.

renamePríkaz bude hľadať "param" všade v názve súboru, a nahradiť ju "parametrom" vo všetkých prípadoch.

Druhé použitie  lspríkazu nám ukazuje, že presne to sa stalo. Či už bol parameter „param“ na začiatku alebo na konci názvu súboru, bol nahradený parametrom „parameter“.

Na vylepšenie správania stredného výrazu môžeme použiť Perlove metaznaky. Metaznaky sú symboly, ktoré predstavujú polohy alebo postupnosti znakov. Napríklad ^znamená „začiatok reťazca“, $„koniec reťazca“ a .znamená akýkoľvek jednotlivý znak (okrem znaku nového riadku).

Začiatok reťazca metacharacter ( ^) použijeme na obmedzenie nášho vyhľadávania na začiatok mien súborov.

ls * param * .c
premenovať 's / ^ parameter / value /' * .c
ls * param * .c
je hodnota * .c

Súbory, ktoré sme predtým premenovali, sú uvedené v zozname a vidíme, že reťazec „parameter“ je na začiatku troch mien súborov a je na konci jedného z názvov súborov.

Náš renamepríkaz používa (^pred hľadaným výrazom „parameter“ metaznak začiatku  ). Toto hovorí, renameaby sa hľadaný výraz považoval za nájdený, iba ak je na začiatku názvu súboru. Vyhľadávací reťazec „parameter“ bude ignorovaný, ak je kdekoľvek inde v názve súboru.

Po kontrole lsvidíme, že názov súboru, ktorý mal na konci názvu „parameter“, nebol upravený, ale pri troch súboroch, ktoré mali na začiatku svojich mien „parameter“, bol hľadaný reťazec nahradený náhradným výrazom „Hodnota“.

Sila renamelži v sile Perla. Všetka sila Perlu je vám k dispozícii.

Vyhľadávanie so zoskupeniami

renamemá v rukáve ešte ďalšie triky. Zvážme prípad, keď by ste mohli mať súbory s podobnými reťazcami v názvoch. Nie sú to úplne rovnaké reťazce, takže jednoduché vyhľadávanie a nahradenie tu nebude fungovať.

V tomto príklade používame ls na kontrolu, ktoré súbory máme, ktoré začínajú na „str“. Existujú dva z nich, string.c a strangle.c. Oba reťazce môžeme premenovať naraz pomocou techniky nazývanej zoskupovanie.

Centrálny výraz tohto renamepríkazu vyhľadá reťazce v názvoch súborov, ktoré majú postupnosť znakov „stri“ alebo „stra“, kde za týmito sekvenciami bezprostredne nasleduje „ng“. Inými slovami, náš hľadaný výraz bude hľadať reťazec a reťazec. Substitučný výraz je „tresk“.

je str * .c
premenovať 's / (stri | stra) ng / bang /' * .c
je zákaz * .c

Používanie  ls druhýkrát potvrdzuje, že string.c stala bang.c a strangle.c je teraz bangle.c.

Používanie prekladov s premenovaním

renamePríkaz možno vykonávať akcie na názvy súborov s názvom preklady. Jednoduchým príkladom prekladu by bolo vynútenie súboru názvov súborov na veľké písmená.

V renamepríkaze nižšie si všimnite, že s/ na spustenie centrálneho výrazu nepoužívame znak , ktorý používame y/. To hovorí  rename, že nevykonávame zámenu; vykonávame preklad.

Tento a-z výraz je výraz Perl, ktorý znamená všetky malé znaky v poradí od a do z. Podobne A-Z výraz predstavuje všetky veľké písmená v poradí od A po Z.

Centrálny výraz v tomto príkaze by sa dal parafrázovať tak, že „ak sa v názve súboru nachádza nejaké malé písmeno od a po z, nahraďte ho zodpovedajúcimi znakmi v poradí veľkých písmen od A po Z.“

Ak chcete vynútiť veľkosť súborov všetkých súborov „.prg“ na veľké písmená, použite tento príkaz:

premenovať 'y / az / AZ /' * .prg

je * .PRG

Na lspríkaz nám ukazuje, že všetky "PRG" názvy súborov sú teraz veľkými písmenami. Aby sme boli presní, v skutočnosti to už nie sú súbory „.prg“. Sú to súbory „.PRG“. Linux rozlišuje veľké a malé písmená.

Posledný príkaz môžeme zvrátiť obrátením polohy  výrazov a-za A-Zv centrálnom výraze.

premenovať 'y / AZ / az /' * .PRG

ls * .prg

Perl sa nenaučíte za päť minút

Dobre strávený čas na zvládnutie Perlu. Aby ste však mohli začať využívať časovo úsporné možnosti renamepríkazu, nemusíte mať vôbec veľa znalostí Perlu, aby ste mohli ťažiť z veľkých výhod v oblasti sily, jednoduchosti a času.