Komennon nimeäminen uudelleen Linuxissa

Tutustu Linux-maailman voimanpesän tiedostojen uudelleennimeämiseen ja anna mv- ja itsellesi - levätä. Renameon joustava, nopea ja joskus jopa helpompaa. Tässä on opetus tälle komennon voimalaitokselle.

Mikä on väärin mv: llä?

Ei ole mitään vikaa mv. Komento tekee hienon työn, ja se löytyy kaikista Linux-jakeluista, macOS: sta ja muista Unix-tyyppisistä käyttöjärjestelmistä. Joten se on aina saatavilla. Mutta joskus tarvitset vain puskutraktorin, ei lapiota.

mvKomento on elämän tarkoitus, ja se on siirtää tiedostoja. On iloinen sivuvaikutus, että sitä voidaan käyttää olemassa olevan tiedoston siirtämiseen uuteen tiedostoon uudella nimellä. Nettovaikutuksena on nimetä tiedosto uudelleen, joten saamme mitä haluamme. Mutta mvei ole oma tiedostojen uudelleennimeämistyökalu.

Yksittäisen tiedoston uudelleennimeäminen mv: llä

Jos mvhaluat nimetä uudelleen tiedostotyypin mv, välilyönnin, tiedoston nimen, välilyönnin ja uuden nimen, jonka haluat tiedostolle. Paina sitten Enter.

Voit  lstarkistaa, että tiedosto on nimetty uudelleen.

mv oldfile.txt newfile.txt
ls * .txt

Useiden tiedostojen uudelleennimeäminen mv: llä

Asiat muuttuvat hankalammiksi, kun haluat nimetä useita tiedostoja uudelleen. mvei kykene käsittelemään useiden tiedostojen uudelleennimeämistä. Sinun on käytettävä joitain hienoja Bash-temppuja. Se on hieno, jos tiedät jonkin keskitason komentorivifun, mutta useiden tiedostojen uudelleennimeämisen monimutkaisuus mvseisoo jyrkässä ristiriidassa mvyksittäisen tiedoston uudelleennimeämisen helppouden kanssa .

Asiat kärjistyvät nopeasti.

Oletetaan, että meillä on hakemisto, jossa on erilaisia ​​tiedostoja, erityyppisiä. Joillakin näistä tiedostoista on .prog-laajennus. Haluamme nimetä ne komentoriviltä niin, että niillä on .prg-laajennus.

Kuinka ryhdymme mvtekemään niin puolestamme? Katsotaanpa tiedostoja.

ls * .prog -l

Tässä on yksi tapa tehdä se, joka ei turvaudu kirjoittamaan varsinaista Bash-komentosarjatiedostoa.

f: lle * .prog; tee mv - "$ f" "$ {f% .prog} .prg"

Onko tämä työtä? Tarkistetaan tiedostot ja katsotaan.

ls * .pr *

Joten kyllä, se toimi. Ne ovat kaikki nyt .prg-tiedostoja, eikä hakemistossa ole .prog-tiedostoja.

Mitä juuri tapahtui?

Mitä tuo pitkä komento todella teki? Hajotetaan se.

f: lle * .prog; tee mv - "$ f" "$ {f% .prog} .prg"

Ensimmäinen osa aloittaa silmukan, joka aikoo käsitellä jokaista hakemistossa olevaa .prog-tiedostoa puolestaan.

Seuraava osa kertoo mitä jalostus tehdä . Se käyttää  mvjokaista tiedostoa uuteen tiedostoon. Uusi tiedosto nimetään alkuperäisen tiedoston nimen kanssa .prog-osaa lukuun ottamatta. Sen sijaan käytetään uutta .prg-laajennusta.

On oltava yksinkertaisempi tapa

Varmasti. Se on renamekomento.

renameei ole osa tavallista Linux-jakelua, joten sinun on asennettava se. Sillä on myös eri nimi eri Linux-perheissä, mutta ne kaikki toimivat samalla tavalla. Sinun tarvitsee vain korvata sopiva komentonimi käyttämäsi Linux-makun mukaan.

Ubuntu- ja Debian-johdannaisissa, jotka asennat renamenäin:

sudo apt-get install rename

Fedora- ja RedHat-johdannaisissa jakeluissa asennat prenamenäin. Huomaa ensimmäinen "p", joka tarkoittaa Perl.

sudo dnf asenna etunimi

Asenna se Manjaro Linuxiin seuraavalla komennolla. Huomaa, että uudelleennimeämiskomento kutsutaan perl-rename.

sudo pacman -Syu perl-nimeä uudelleen

Tehdään se uudestaan

Ja tällä kertaa käytämme rename. Käännämme kelloa taaksepäin, jotta meillä on joukko .prog-tiedostoja.

ls * .prog

Nimeetään nyt uudestaan ​​seuraavalla komennolla. Tarkistamme sitten, lstoimiiko se. Muista korvata renamesopiva komentonimi Linuxillesi, jos et käytä Ubuntua tai Debian-johdettua Linuxia.

nimeä uudelleen nimi 's / .prog / .prg /' * .prog
ls * .pr *

Se toimi, ne ovat nyt kaikki .prg-tiedostoja, eikä hakemistoon ole jäänyt .prog-tiedostoja.

Mikä tapahtui tässä muodossa?

Selitetään tuo taika, kolmessa osassa.

Ensimmäinen osa on komento nimi, rename(tai prenametai perl-rename, muiden jakaumat).

Viimeinen osa on *.prog, joka kertoo renametoimimaan kaikille ”.prog” tiedostoja.

Keskimmäinen osa määrittelee työtä haluamme tehdä jokaisesta tiedostonimi. sVälineet korvike. Ensimmäinen termi ( .prog) renameetsii kutakin tiedostonimeä ja toinen termi ( .prg) korvaa sen.

Komennon keskiosa eli keskilauseke on Perlin säännöllinen lauseke ja se antaa renamekomennolle sen joustavuuden.

Tiedostonimen muiden osien muuttaminen

Olemme muuttaneet tiedostonimien laajennuksia toistaiseksi, muutetaan tiedostojen muita osia.

Hakemistossa on paljon C-lähdekooditiedostoja. Kaikissa tiedostonimissä on etuliite ”slang_”. Voimme tarkistaa tämän ls.

ls sl * .c

Aiomme korvata kaikki "slang_" esiintymät "sl_". Komennon muoto on meille jo tuttu. Muutamme vain hakutermiä, korvaavaa termiä ja tiedostotyyppiä.

nimeä uudelleen s / slang_ / sl_ '* .c

Tällä kertaa etsimme .c-tiedostoja ja haemme sanaa “slang_”. Aina kun "slang_" löytyy tiedostonimestä, se korvataan nimellä "sl_".

Voimme tarkistaa komennon tuloksen toistamalla lskomennon ylhäältä samoilla parametreilla:

ls sl * .c

Osa tiedostonimen poistamisesta

Voimme poistaa osan tiedostonimestä korvaamalla hakutermin ei mitään.

ls * .c
nimeä uudelleen s / sl _ // '* .c
ls * .c

lsKomennosta voidaan nähdä, että kaikki .c-tiedostomme on valmiiksi merkitty sl_: llä. Päästetään eroon siitä kokonaan.

renameKomento noudattaa samaa muotoa kuin ennenkin. Etsimme .c-tiedostoja. Hakutermi on ”sl_”, mutta korvaavaa termiä ei ole. Kaksi taaksepäin viivaa ilman mitään niiden välissä ei tarkoita mitään, tyhjää merkkijonoa.

renamekäsittelee kaikki .c-tiedostot vuorotellen. Se etsii ”sl_” tiedostonimestä. Jos se löytyy, se ei korvaa mitään. Toisin sanoen hakutermi poistetaan.

lsKomennon toinen käyttö vahvistaa, että sl_-etuliite on poistettu jokaisesta .c-tiedostosta.

Rajoita muutoksia tiedostonimien tiettyihin osiin

Katsotaanpa ls niitä tiedostoja, joiden tiedostonimessä on merkkijono "param". Sitten käytämme renametämän merkkijonon korvaamista merkkijonolla "parametri". Käytämme lsvielä kerran nähdäksesi renamekomennon vaikutuksen näihin tiedostoihin.

ls * param *
nimeä s / param / parametri uudelleen * .c
ls * param *

Löydetään neljä tiedostoa, joiden tiedostonimessä on "param". param.c, param_one.c ja param_two.c on kaikilla nimensä alussa “param” . third_param.c: llä on "param" nimen lopussa , juuri ennen laajennusta.

renameKomento tulee etsiä ”param” kaikkialla tiedostonimi, ja korvata sen ”parametri” kaikissa tapauksissa.

lsKomennon toinen käyttö  osoittaa meille, että juuri näin on tapahtunut. Olipa ”param” tiedostonimen alussa tai lopussa, se on korvattu parametrilla.

Voimme käyttää Perlin metahahmoja tarkentamaan keskilausekkeen käyttäytymistä. Metamerkit ovat symboleja, jotka edustavat merkkien sijaintia tai sekvenssiä. Esimerkiksi ^tarkoittaa "merkkijonon alku" $tarkoittaa "merkkijonon loppu" ja .tarkoittaa mitä tahansa yksittäistä merkkiä (lukuun ottamatta uuden rivin merkkiä).

Aiomme käyttää merkkijonon alkumerkkiä ( ^) rajoittaa haun tiedostojen alkuun.

ls * param * .c
nimeä s / ^ parametri / arvo / '* .c
ls * param * .c
ls-arvo * .c

Aiemmin uudelleennimeämämme tiedostot on lueteltu, ja voimme nähdä, että merkkijono "parametri" on kolmen tiedostonimen alussa ja se on yhden tiedostonimen lopussa.

Meidän renamekomento käyttää alku linjan  (^) metamerkki ennen hakusana ”parametri.” Tämä kertoo rename, että hakutermi on löydetty vain, jos se on tiedostonimen alussa. Hakumerkkijono "parametri" ohitetaan, jos se on muualla tiedostonimessä.

Tarkastamalla lsosoitteesta voimme nähdä, että tiedostonimeä, jolla oli "parametri" tiedostonimen lopussa , ei ole muokattu, mutta kolmessa tiedostonimessä, joilla oli "parametri" nimensä alussa , haku merkkijono on korvattu korvaavalla termillä "arvo."

renamePerlin vallassa on valhe. Kaikki Perlin voimat ovat käytettävissäsi.

Haku ryhmittelyjen avulla

renameon vielä enemmän temppuja hihassaan. Tarkastellaan tapausta, jossa sinulla saattaa olla tiedostoja, joiden nimissä on samanlaisia ​​merkkijonoja. Ne eivät ole täsmälleen samat merkkijonot, joten yksinkertainen haku ja korvaaminen eivät toimi täällä.

Tässä esimerkissä ls tarkistamme, mitkä tiedostot alkavat merkinnällä “str”. Niitä on kaksi, string.c ja strangle.c. Voimme nimetä molemmat merkkijonot kerralla käyttämällä ryhmittelyn tekniikkaa.

Tämän renamekomennon keskeinen lauseke etsii merkkijonoja tiedostonimistä, joilla on merkkijono "stri" tai "stra", missä näitä sekvenssejä seuraa välittömästi "ng". Toisin sanoen hakutermimme etsii sanoja "merkkijono" ja "outo". Korvaava termi on "bang".

ls str * .c
nimeä 's / (stri | stra) ng / bang /' * .c
kieltää * .c

ls Toisen kerran käyttäminen  vahvistaa, että merkkijonosta c on tullut bang.c ja strangle.c on nyt rannerengas.c.

Käännösten käyttäminen uudelleen nimeämisen kanssa

renameKomento voi suorittaa toimia tiedostonimet nimeltään käännöksiä. Yksinkertainen esimerkki käännöksestä olisi pakottaa joukko tiedostonimiä isoihin kirjaimiin.

renameHuomaa alla olevassa komennossa, että emme käytä s/ keskitetyn lausekkeen käynnistämiseen, me käytämme y/. Tämä kertoo,  renameettemme tee korvaamista; teemme käännöksen.

a-z Termi on Perl lauseke, joka tarkoittaa sitä, kaikki pienet kirjaimet sekvenssi az. Vastaavasti A-Z termi edustaa kaikkia isoja kirjaimia järjestyksessä A: sta Z: seen.

Tämän komennon keskeinen lauseke voidaan muotoilla seuraavasti: "Jos jokin pienistä kirjaimista a: sta z: hen löytyy tiedostonimestä, korvaa ne vastaavilla merkeillä isojen kirjainten sarjasta A: sta Z: hen".

Pakota kaikkien .prg-tiedostojen tiedostonimet isoihin kirjaimiin käyttämällä tätä komentoa:

nimetä uudelleen y / az / AZ / '* .prg

ls * .PRG

lsKomento osoittaa meille, että kaikki ”.prg” tiedostonimet ovat nyt isoja kirjaimia. Itse asiassa tarkkaan sanottuna ne eivät enää ole .prg-tiedostoja. Ne ovat .PRG-tiedostoja. Linux erottelee isot ja pienet kirjaimet.

Voimme kumota viimeisen komennon kääntämällä kesken-  lausekkeen a-zja A-Ztermien sijainnin.

nimeä uudelleen 'y / AZ / az /' * .PRG

ls * .prg

Et (opi | Älä) opi Perliä viidessä minuutissa

Perliin tarttuminen on hyvin vietettyä aikaa. Mutta jotta voit aloittaa renamekomennon aikaa säästävien ominaisuuksien käytön , sinun ei tarvitse olla lainkaan paljon Perl-tietämystä saadaksesi suuria hyötyjä tehosta, yksinkertaisuudesta ja ajasta.