Kā komandu pārdēvēt Linux

Iepazīstieties ar failu pārdēvēšanas Linux pasaules spēkstaciju un dodiet mvatpūtu - un pats sev. Renameir elastīga, ātra un dažreiz pat vieglāka. Lūk, šī komandas spēka pamācība.

Kas ir nepareizi ar mv?

Nav nekā slikta mv. Komanda veic lielisku darbu, un tā ir atrodama visos Linux izplatījumos, MacOS un citās Unix līdzīgās operētājsistēmās. Tātad tas vienmēr ir pieejams. Bet dažreiz jums vajag tikai buldozeru, nevis lāpstu.

mvKomanda ir mērķi dzīvē, un tas ir, lai pārvietotu failus. Tas ir laimīgs blakusparādība, ka to var izmantot, lai pārvietotu esošu failu uz jaunu failu ar jaunu nosaukumu. Neto efekts ir faila pārdēvēšana, lai mēs iegūtu to, ko vēlamies. Bet mvtas nav īpašs failu pārdēvēšanas rīks.

Viena faila pārdēvēšana ar mv

Lai izmantotu mvfaila veida mv, atstarpes, faila nosaukuma, atstarpes un jaunā faila nosaukuma pārdēvēšanai . Pēc tam nospiediet taustiņu Enter.

Jūs varat izmantot,  lslai pārbaudītu, vai fails ir pārdēvēts.

mv oldfile.txt newfile.txt
ls * .txt

Vairāku failu pārdēvēšana ar mv

Lietas kļūst sarežģītākas, ja vēlaties pārdēvēt vairākus failus. mvnespēj tikt galā ar vairāku failu pārdēvēšanu. Jums jāizmanto daži izveicīgi Bash triki. Tas ir labi, ja jūs zināt kādu vidējas pakāpes komandrindas fu, taču vairāku failu pārdēvēšanas ar mvstatīviem sarežģītība ir krasā pretstatā tā, ka ir viegli izmantot mvviena faila pārdēvēšanu.

Lietas ātri saasinās.

Pieņemsim, ka mums ir direktorijs ar dažādiem failiem, dažāda veida. Dažiem no šiem failiem ir paplašinājums “.prog”. Mēs vēlamies tos pārdēvēt komandrindā, lai viņiem būtu paplašinājums “.prg”.

Kā mēs samelojamies mvto darīt mūsu vietā? Apskatīsim failus.

ls * .prog -l

Šeit ir viens veids, kā to izdarīt, neizmantojot faktiskā Bash skripta faila rakstīšanu.

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

DId, ka darbs? Pārbaudīsim failus un redzēsim.

ls * .pr *

Tātad, jā, tas darbojās. Viņi visi tagad ir “.prg” faili, un direktorijā nav “.prog” failu.

Kas tikko notika?

Ko patiesībā darīja šī garā komanda? Sadalīsim to.

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

Pirmajā daļā sākas cilpa, kas savukārt apstrādā katru direktorijā esošo “.prog” failu.

Nākamā daļa saka to apstrāde būs jādara . Tas tiek izmantots,  mvlai katru failu pārvietotu uz jaunu failu. Jaunais fails tiks nosaukts ar sākotnējā faila nosaukumu, izņemot “.prog” daļu. Tā vietā tiks izmantots jauns .prg paplašinājums.

Jābūt vienkāršākam veidam

Pilnīgi noteikti. Tā ir renamekomanda.

renamenav daļa no standarta Linux izplatīšanas, tāpēc jums tas būs jāinstalē. Dažādās Linux ģimenēs tam ir arī atšķirīgs nosaukums, taču tie visi darbojas vienādi. Jums vienkārši būs jāaizstāj atbilstošais komandas nosaukums atbilstoši izmantotajam Linux aromātam.

Ubuntu un Debian atvasinātajos izplatījumos jūs instalējat renamešādi:

sudo apt-get install pārdēvēt

Fedora un RedHat atvasinātajos izplatījumos jūs instalējat prenamešādi. Ievērojiet sākotnējo “p”, kas apzīmē Perlu.

sudo dnf instalēt pirmsvārdu

Lai to instalētu Manjaro Linux, izmantojiet šādu komandu. Ņemiet vērā, ka tiek saukta pārdēvēšanas komanda perl-rename.

sudo pacman -Syu perl-pārdēvēt

Darīsim to vēlreiz

Un šoreiz mēs to izmantosim rename. Mēs atlaidīsim pulksteni, lai mums būtu “.prog” failu kopa.

ls * .prog

Tagad izmantosim šādu komandu, lai tos pārdēvētu. Pēc tam mēs pārbaudīsim, lsvai tas darbojas. Neaizmirstiet aizstāt renamear atbilstošo komandas nosaukumu savam Linux, ja neizmantojat Ubuntu vai Debian atvasinātu Linux.

pārdēvēt 's / .prog / .prg /' * .prog
ls * .pr *

Tas izdevās, tagad viņi visi ir .prg faili, un direktorijā nav palicis neviens .prog fails.

Kas notika ar šo modeli?

Paskaidrosim šo burvju daļu trīs daļās.

Pirmā daļa ir komandas nosaukums, rename(vai prename, vai perl-rename, citu sadalījumiem).

Pēdējā daļa ir *.prog, kas saka renamedarboties visiem ".prog" failus.

Vidējā daļa nosaka darbu vēlamies izdarīt uz katra faila nosaukumu. Tas snozīmē aizstājēju. Pirmais vārds ( .prog) ir tas, ko renamemeklēs katrā faila nosaukumā, un otrais vārds ( .prg) ar to tiks aizstāts.

Komandas vidusdaļa jeb centrālā izteiksme ir Perla regulārā izteiksme, un tieši tā renamekomandai piešķir tās elastību.

Faila nosaukuma citu daļu mainīšana

Mēs līdz šim esam mainījuši faila nosaukuma paplašinājumus, labosim citas failu nosaukumu daļas.

Direktorijā ir daudz C avota koda failu. Visiem failu nosaukumiem ir prefikss “slang_”. Mēs to varam pārbaudīt ls.

ls sl * .c

Mēs aizstāsim visus “sleng_” gadījumus ar “sl_”. Komandas formāts mums jau ir pazīstams. Mēs vienkārši mainām meklēšanas vienumu, aizstājošo vārdu un faila tipu.

pārdēvēt 's / slang_ / sl_' * .c

Šoreiz mēs meklējam “.c” failus un meklējam “slang_”. Ikreiz, kad faila nosaukumā tiek atrasts “slengs_”, tas tiek aizstāts ar “sl_”.

Mēs varam pārbaudīt šīs komandas rezultātu, atkārtojot lskomandu no augšas ar tiem pašiem parametriem:

ls sl * .c

Faila nosaukuma daļas dzēšana

Mēs varam noņemt daļu no faila nosaukuma, meklēšanas vārdu aizstājot ar neko.

ls * .c
pārdēvēt s / sl _ // '* .c
ls * .c

Pēc lskomandas mēs redzam, ka visi mūsu .c faili ir sagatavoti ar “sl_”. Atbrīvosimies no tā pavisam.

renameKomanda tādā pašā formā, kā pirms tam. Mēs meklēsim “.c” failus. Meklēšanas vienums ir “sl_”, bet aizstājēja nav. Divas pretējās slīpsvītras bez neko starp tām nenozīmē neko, tukšu virkni.

renameapstrādās katru “.c” failu pēc kārtas. Tas faila nosaukumā meklēs “sl_”. Ja tas tiks atrasts, tas tiks aizstāts ar neko. Citiem vārdiem sakot, meklēšanas vienums tiek izdzēsts.

Otrais lskomandas lietojums apstiprina, ka prefikss “sl_” ir noņemts no katra “.c” faila.

Ierobežot izmaiņas konkrētās failu nosaukumu daļās

Izmantosim, ls lai apskatītu failus, kuru faila nosaukumā ir virkne “param”. Tad mēs izmantosim, renamelai aizstātu šo virkni ar virkni “parametrs”. Mēs lsvēlreiz izmantosim, lai redzētu renamekomandas ietekmi uz šiem failiem.

ls * param *
pārdēvēt 's / param / parametru' * .c
ls * param *

Tiek atrasti četri faili, kuru faila nosaukumā ir “param”. param.c, param_one.c un param_two.c visiem vārda sākumā ir “param” . third_param.c nosaukuma beigās tieši pirms paplašinājuma ir “param” .

renameKomanda dodas meklēt "param" visur filename, un aizstāt to ar "parametru" visos gadījumos.

Otrais lskomandas lietojums  mums parāda, ka tieši tas ir noticis. Neatkarīgi no tā, vai “param” bija faila nosaukuma sākumā vai beigās, tas tika aizstāts ar “parametrs”.

Mēs varam izmantot Perla metarakstu zīmes, lai uzlabotu vidējās izteiksmes uzvedību. Metahomas ir simboli, kas attēlo rakstzīmju pozīcijas vai secības. Piemēram, tas ^nozīmē “virknes sākums” $nozīmē “virknes beigas” un .nozīmē jebkuru atsevišķu rakstzīmi (izņemot jauna rindas rakstzīmi).

Mēs izmantosim virknes metacharacter ( ^) sākumu, lai meklēšanu ierobežotu ar failu nosaukumu sākumu.

ls * param * .c
pārdēvēt 's / ^ parametru / vērtību /' * .c
ls * param * .c
ls vērtība * .c

Faili, kurus mēs iepriekš pārdēvējām, ir uzskaitīti, un mēs varam redzēt, ka virkne “parametrs” ir trīs failu nosaukumu sākumā un viena faila nosaukuma beigās.

Mūsu renamekomanda (^pirms meklēšanas vienuma “parametrs” izmanto rindas “ metacharacter ” sākumu  . Tas liek renameuzskatīt, ka meklēšanas vienums ir atrasts tikai tad, ja tas ir faila nosaukuma sākumā. Meklēšanas virkne “parametrs” tiks ignorēta, ja tā atrodas faila nosaukumā.

Pārbaudot ar ls, mēs varam redzēt, ka faila nosaukums , kura faila nosaukuma beigās bija “parametrs”, nav modificēts, bet trim faila nosaukumiem , kuru vārdu sākumā bija “parametrs”, meklēšanas virkne ir aizstāta ar aizstājošo vārdu “Vērtība”.

Spēks renameslēpjas spēku Perl. Jūsu rīcībā ir viss Perl spēks.

Meklēšana ar grupējumiem

renameir vēl vairāk triku uzmava. Apsvērsim gadījumu, kad jūsu nosaukumos varētu būt faili ar līdzīgām virknēm. Tās nav tieši tās pašas virknes, tāpēc vienkārša meklēšana un aizstāšana šeit nedarbosies.

Šajā piemērā mēs ls pārbaudām, kuri faili mums sākas ar “str”. Ir divi no tiem, string.c un strangle.c. Abas virknes mēs varam pārdēvēt uzreiz, izmantojot paņēmienu, ko sauc par grupēšanu.

Šīs renamekomandas centrālā izteiksme meklēs virknes failu nosaukumos, kuru rakstzīmju secība ir “stri” vai “stra”, kur šīm sekvencēm tūlīt seko “ng”. Citiem vārdiem sakot, mūsu meklēšanas vienums meklēs “stīgas” un “dīvainas”. Aizstāšanas termins ir “sprādziens”.

ls str * .c
pārdēvēt s / (stri | stra) ng / bang / '* .c
ls aizliegums * .c

Izmantojot  ls otro reizi, tiek apstiprināts, ka string.c ir kļuvis par bang.c un nožņaugts. C tagad ir bangle.c.

Tulkojumu izmantošana ar pārdēvēšanu

renameKomanda var veikt darbības ar failu nosaukumiem sauc tulkojumi. Vienkāršs tulkojuma piemērs būtu failu nosaukumu kopas piespiešana lielajos burtos.

renameZemāk esošajā komandā ievērojiet, ka mēs neizmantojam a, s/ lai sāktu centrālo izteiksmi, mēs to izmantojam y/. Tas norāda, ka  renamemēs neveicam nomaiņu; mēs veicam tulkojumu.

Šis a-z termins ir Perla izteiksme, kas nozīmē visas mazās rakstzīmes secībā no a līdz z. Līdzīgi šis A-Z termins apzīmē visus lielos burtus secībā no A līdz Z.

Šīs komandas centrālo izteicienu varētu pārfrāzēt šādi: "Ja faila nosaukumā ir kāds no mazajiem burtiem no a līdz z, aizstājiet tos ar atbilstošajām rakstzīmēm no lielo burtu secības no A līdz Z".

Lai visus “.prg” failu nosaukumus piespiestu lielajiem burtiem, izmantojiet šo komandu:

pārdēvēt 'y / az / AZ /' * .prg

ls * .PRG

Par lskomandu rāda mums, ka visi ".prg" failu nosaukumus tagad lielajiem burtiem. Patiesībā, lai būtu precīzi precīzi, tie vairs nav “.prg” faili. Tie ir “.PRG” faili. Linux ir reģistrjutīgs.

Mēs varam mainīt šo pēdējo komandu, mainot a-zun A-Z terminu pozīciju centrālajā izteiksmē.

pārdēvēt 'y / AZ / az /' * .PRG

ls * .prg

Jūs (Wo | Do) nav iemācīties Perl piecās minūtēs

Iepazīšanās ar Perlu ir labi pavadīts laiks. Bet, lai sāktu izmantot renamekomandas laika taupīšanas iespējas , jums vispār nav jābūt daudz Perl zināšanām, lai gūtu lielas priekšrocības jaudā, vienkāršībā un laikā.