Jak používat příkaz přejmenování v systému Linux

Vypořádejte se s powerhouse přejmenovávání souborů ve světě Linuxu a mvodpočiňte si - a sami sobě. Renameje flexibilní, rychlý a někdy ještě jednodušší. Tady je návod k této velitelské moci.

Co se děje s mv?

Na tom není nic špatného mv. Příkaz odvede dobrou práci a nachází se ve všech distribucích Linuxu, v macOS a v jiných operačních systémech podobných Unixu. Takže je vždy k dispozici. Někdy ale potřebujete pouze buldozer, ne lopatu.

mvPříkaz má smysl života, a to je pro přesun souborů. Je šťastným vedlejším účinkem, že jej lze použít k přesunutí existujícího souboru do nového souboru s novým názvem. Čistým efektem je přejmenování souboru, takže dostaneme to, co chceme. Ale mvnení vyhrazené přejmenování souborů nástroj.

Přejmenování jednoho souboru pomocí mv

Chcete-li použít mvk přejmenování typu souboru mv, mezery, názvu souboru, mezery a nového názvu, který chcete, aby soubor měl. Poté stiskněte klávesu Enter.

Můžete  lszkontrolovat, zda byl soubor přejmenován.

mv oldfile.txt newfile.txt
je * .txt

Přejmenování více souborů pomocí mv

Když chcete přejmenovat více souborů, věci se zkomplikují. mvnemá schopnost vypořádat se s přejmenováním více souborů. Musíte se uchýlit k použití několika šikovných triků Bash. To je v pořádku, pokud znáte nějaké středně náročné příkazové řádky, ale složitost přejmenování více souborů mvje v ostrém kontrastu se snadným použitím mvk přejmenování jednoho souboru.

Věci se rychle stupňují.

Řekněme, že máme adresář s různými soubory různých typů. Některé z těchto souborů mají příponu „.prog“. Chceme je přejmenovat na příkazovém řádku, aby měli příponu „.prg“.

Jak se do toho pustíme mv? Pojďme se podívat na soubory.

ls * .prog -l

Zde je jeden způsob, jak to udělat, který se neuchýlí k napsání skutečného souboru skriptu Bash.

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

Fungovalo to? Podívejme se na soubory a uvidíme.

ls * .pr *

Takže ano, fungovalo to. Nyní jsou to všechny soubory „.prg“ a v adresáři nejsou žádné soubory „.prog“.

Co se právě stalo?

Co vlastně ten dlouhý příkaz udělal? Pojďme to rozebrat.

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

První část začíná smyčkou, která bude zase zpracovávat každý soubor „.prog“ v adresáři.

Další část říká, co bude zpracování dělat . Používá se  mvk přesunutí každého souboru do nového souboru. Nový soubor bude pojmenován původním názvem souboru s výjimkou části „.prog“. Místo toho bude použita nová přípona „.prg“.

Musí existovat jednodušší cesta

Rozhodně. Je to renamepříkaz.

renamenení součástí standardní distribuce Linuxu, takže si ji budete muset nainstalovat. Má také jiný název v různých rodinách Linuxu, ale všechny fungují stejným způsobem. Musíte pouze nahradit název příslušného příkazu podle linuxové verze, kterou používáte.

v distribucích odvozených z Ubuntu a Debianu instalujete renametakto:

sudo apt-get install přejmenovat

V distribucích Fedory a RedHat se instalujete prenametakto. Všimněte si počáteční „p“, což znamená Perl.

sudo dnf install prename

Chcete-li jej nainstalovat do systému Manjaro Linux, použijte následující příkaz. Všimněte si, že je přejmenován příkaz perl-rename.

sudo pacman -Syu perl-rename

Udělejme to znovu

A tentokrát použijeme rename. Vrátíme hodiny zpět, abychom měli soubor souborů „.prog“.

je * .prog

Nyní je přejmenujeme pomocí následujícího příkazu. Poté zkontrolujeme, lszda to fungovalo. renamePokud nepoužíváte Ubuntu nebo Linux odvozený od Debianu, nezapomeňte nahradit odpovídající název příkazu pro svůj Linux.

přejmenovat 's / .prog / .prg /' * .prog
ls * .pr *

To fungovalo, nyní jsou to všechny soubory „.prg“ a v adresáři nezůstávají žádné soubory „.prog“.

Co se stalo v této době?

Vysvětlíme tento kousek magie ve třech částech.

První část je název příkazu, rename(nebo prename, nebo perl-rename, pokud jde o jiných distribucích).

Poslední část *.prog, která říká, renamepůsobit na všechny „.prog“ soubory.

Prostřední část vymezuje práci chceme být provedena na každém souboru. sProstředky nahradit. První výraz ( .prog) renamebude vyhledávat v každém názvu souboru a druhý výraz ( .prg) bude nahrazen.

Prostřední část příkazu, nebo centrální výraz, je Perlův „regulární výraz“ a je to, co dává renamepříkazu jeho flexibilitu.

Změna dalších částí názvu souboru

Dosud jsme změnili přípony souborů, upravme další části názvů souborů.

V adresáři je spousta souborů zdrojového kódu C. Všechny názvy souborů mají předponu „slang_“. Můžeme to zkontrolovat pomocí ls.

je sl * .c

Nahradíme všechny výskyty „slang_“ výrazem „sl_“. Formát příkazu je nám již známý. Právě měníme hledaný výraz, náhradní výraz a typ souboru.

přejmenovat 's / slang_ / sl_' * .c

Tentokrát hledáme soubory „.c“ a hledáme „slang_“. Kdykoli se v názvu souboru objeví „slang_“, nahradí se „sl_“.

Výsledek tohoto příkazu můžeme zkontrolovat opakováním lspříkazu shora se stejnými parametry:

je sl * .c

Odstranění části názvu souboru

Můžeme odstranit část názvu souboru nahrazením hledaného výrazu ničím.

je * .c
přejmenovat 's / sl _ //' * .c
je * .c

Z lspříkazu vidíme, že všechny naše soubory „.c“ mají předponu „sl_“. Zbavme se toho úplně.

renamePříkaz následuje stejný formát jako předtím. Budeme hledat soubory „.c“. Hledaný výraz je „sl_“, ale neexistuje žádný substituční výraz. Dvě zpětná lomítka, aniž by mezi nimi bylo cokoli, nic neznamená, prázdný řetězec.

renamezpracuje každý soubor „.c“. V názvu souboru vyhledá „sl_“. Pokud je nalezen, nebude nahrazen ničím. Jinými slovy, hledaný výraz je odstraněn.

Druhé použití lspříkazu potvrzuje, že předpona „sl_“ byla odstraněna z každého souboru „.c“.

Omezit změny na konkrétní části názvů souborů

Pojďme ls se podívat na soubory, které mají v názvu souboru řetězec „param“. Potom použijeme renamek nahrazení tohoto řetězce řetězcem „parametr“. Použijeme ještě lsjednou, abychom viděli, jaký účinek měl renamepříkaz na tyto soubory.

ls * param *
přejmenovat 's / param / parametr' * .c
ls * param *

Byly nalezeny čtyři soubory, které mají ve svém názvu „param“. param.c, param_one.c a param_two.c mají na začátku jména „param“ . third_param.c má na konci svého názvu „param“ , těsně před příponou.

renamePříkaz bude hledat „param“ všude v názvu souboru, a nahradit ji „parametrem“ ve všech případech.

Druhé použití  lspříkazu nám ukazuje, že přesně to se stalo. Ať už byl parametr „param“ na začátku nebo na konci názvu souboru, byl nahrazen „parametrem“.

Můžeme použít Perlovy metaznaky k vylepšení chování prostředního výrazu. Metaznaky jsou symboly, které představují pozice nebo sekvence znaků. Například ^znamená „začátek řetězce“, $„konec řetězce“, a .znamená jakýkoli jeden znak (kromě znaku nového řádku).

Použijeme začátek řetězce metacharacter ( ^) k omezení hledání na začátek názvů souborů.

ls * param * .c
přejmenovat 's / ^ parametr / hodnota /' * .c
ls * param * .c
je hodnota * .c

Soubory, které jsme dříve přejmenovali, jsou uvedeny v seznamu a vidíme, že řetězec „parametr“ je na začátku tří názvů souborů a je na konci jednoho ze jmen souborů.

Náš renamepříkaz používá začátek řádku  (^) metaznak před hledaným výrazem „parametr“. To říká, renameaby se hledaný výraz považoval za nalezený, pouze pokud je na začátku názvu souboru. Vyhledávací řetězec „parametr“ bude ignorován, pokud je kdekoli jinde v názvu souboru.

Při kontrole lsvidíme, že název souboru, který měl „parametr“ na konci názvu souboru, nebyl změněn, ale u tří souborů, které měly „parametr“ na začátku svých jmen, byl hledaný řetězec nahrazen náhradním výrazem "hodnota."

Síla renamelži v moci Perla. Veškerá síla Perlu je vám k dispozici.

Hledání pomocí seskupení

renamemá v rukávu ještě další triky. Zvažme případ, kdy byste mohli mít soubory s podobnými řetězci v jejich jménech. Nejsou to úplně stejné řetězce, takže zde jednoduché hledání a nahrazování nebude fungovat.

V tomto příkladu používáme ls ke kontrole, které soubory máme, které začínají na „str“. Jsou dva, string.c a strangle.c. Můžeme přejmenovat oba řetězce najednou pomocí techniky zvané seskupování.

Centrální výraz tohoto renamepříkazu vyhledá řetězce v názvech souborů, které mají sekvenci znaků „stri“ nebo „stra“, kde za těmito sekvencemi bezprostředně následuje „ng“. Jinými slovy, náš hledaný výraz bude hledat „řetězec“ a „strang“. Substituční výraz je „třesk“.

ls str * .c
přejmenovat 's / (stri | stra) ng / bang /' * .c
je zákaz * .c

Použití  ls podruhé potvrzuje, že řetězec.c se stal bang.c a strangle.c je nyní bangle.c.

Používání překladů s přejmenováním

renamePříkaz lze provádět akce na názvy souborů s názvem překlady. Jednoduchým příkladem překladu by bylo vynucení sady názvů souborů na velká písmena.

V renameníže uvedeném příkazu si všimněte, že nepoužíváme s/ ke spuštění centrálního výrazu, používáme y/. To říká  rename, že neprovádíme substituci; provádíme překlad.

a-z Termín je výraz Perl to znamená, že všechny znaky malá v pořadí od A do Z. Podobně A-Z termín představuje všechna velká písmena v pořadí od A do Z.

Centrální výraz v tomto příkazu lze parafrázovat jako „pokud se v názvu souboru nachází malá písmena od a do z, nahraďte je odpovídajícími znaky ze sekvence velkých znaků od A do Z.“

Chcete-li vynutit velká jména souborů všech souborů „.prg“, použijte tento příkaz:

přejmenovat 'y / az / AZ /' * .prg

je * .PRG

Na lspříkaz nám ukazuje, že všechny „PRG“ názvy souborů jsou nyní velkými písmeny. Abychom byli přesní, ve skutečnosti to už nejsou soubory „.prg“. Jsou to soubory „.PRG“. Linux rozlišuje velká a malá písmena.

Tento poslední příkaz můžeme zvrátit obrácením polohy  výrazů a-za A-Zv centrálním výrazu.

přejmenujte 'y / AZ / az /' * .PRG

je * .prg

Za pět minut se (ne) naučíte Perl

Zvládnutí Perlu je dobře strávený čas. Chcete-li však začít používat časově úsporné funkce renamepříkazu, nemusíte mít vůbec žádné znalosti Perlu, abyste mohli sklízet velké výhody v síle, jednoduchosti a čase.