Kako koristiti naredbu za preimenovanje na Linuxu

Upoznajte se s datotekom za preimenovanje elektrane u svijetu Linuxa i mvodmorite se - i vi sami. Renameje fleksibilan, brz i ponekad čak i lakši. Evo vodiča za ovu moćnu naredbu.

Što nije u redu s mv?

Nema ništa loše u tome mv. Naredba izvrsno obavlja svoj posao i nalazi se na svim Linux distribucijama, u macOS-u i u ostalim operativnim sustavima sličnim Unixu. Tako da je uvijek dostupan. Ali ponekad vam treba samo buldožer, a ne lopata.

mvNaredba ima svoju svrhu u životu, a to je da se premjestiti datoteke. Sretna je nuspojava što se može koristiti za premještanje postojeće datoteke u novu datoteku s novim imenom. Neto učinak je preimenovanje datoteke, tako da dobivamo ono što želimo. Ali mvnije namjenski alat za preimenovanje datoteka.

Preimenovanje jedne datoteke pomoću mv

Koristite mvza preimenovanje vrste datoteke mv, razmaka, imena datoteke, razmaka i novog imena koje želite da datoteka ima. Zatim pritisnite Enter.

Pomoću nje možete  lsprovjeriti je li datoteka preimenovana.

mv oldfile.txt newfile.txt
ls * .txt

Preimenovanje više datoteka pomoću mv

Stvari postaju zamršenije kada želite preimenovati više datoteka. mvnema sposobnost bavljenja preimenovanjem više datoteka. Morate se poslužiti nekim izvrsnim Bash trikovima. To je u redu ako poznajete neke fu srednje naredbe iz naredbenog retka, ali složenost preimenovanja više datoteka mvstoji u oštroj suprotnosti s lakoćom korištenja mvza preimenovanje jedne datoteke.

Stvari brzo eskaliraju.

Recimo da imamo direktorij s raznim datotekama različitih vrsta. Neke od ovih datoteka imaju nastavak ".prog". Želimo ih preimenovati na naredbenom retku tako da imaju proširenje ".prg".

Kako se posvađamo mvu tome da to učinimo za nas? Pogledajmo datoteke.

ls * .prog -l

Ovo je jedan od načina koji ne pribjegava pisanju stvarne datoteke Bash skripte.

za f u * .prog; učiniti mv - "$ f" "$ {f% .prog} .prg"

Je li to uspjelo? Provjerimo datoteke i vidjet ćemo.

ls * .pr *

Dakle, da, uspjelo je. Sve su to datoteke ".prg", a u direktoriju nema datoteka ".prog".

Što se upravo dogodilo?

Što je zapravo učinila ta duga zapovijed? Razdvojimo to.

za f u * .prog; učiniti mv - "$ f" "$ {f% .prog} .prg"

Prvi dio započinje petlju koja će redom obraditi svaku datoteku ".prog" u direktoriju.

Sljedeći dio govori što će raditi obrada . Koristi se  mvza premještanje svake datoteke u novu datoteku. Nova datoteka imenovat će se imenom izvorne datoteke, isključujući dio ".prog". Umjesto toga upotrijebit će se novo proširenje ".prg".

Mora postojati jednostavniji način

Definitivno. To je renamezapovijed.

renamenije dio standardne Linux distribucije, pa ćete ga morati instalirati. Također ima različito ime u različitim obiteljima Linuxa, ali svi rade na isti način. Jednostavno ćete morati zamijeniti odgovarajuće ime naredbe u skladu s okusom Linuxa koji koristite.

u distribucije izvedene iz Ubuntu-a i Debiana instalirate renameovako:

sudo apt-get preimenovanje instalacije

U distribucijama izvedenim iz Fedore i RedHat instalirate prenameovako. Obratite pažnju na početno "p", što znači Perl.

sudo dnf instalirati prename

Da biste ga instalirali u Manjaro Linux, upotrijebite sljedeću naredbu. Imajte na umu da se poziva naredba za preimenovanje perl-rename.

sudo pacman -Syu perl-preimenovati

Ponovimo to

I ovaj put ćemo iskoristiti rename. Vratit ćemo sat unatrag tako da imamo skup datoteka .prog.

ls * .prog

Koristimo sada sljedeću naredbu da ih preimenujemo. Zatim ćemo provjeriti je lsli to uspjelo. Ne zaboravite zamijeniti renameodgovarajućim nazivom naredbe za vaš Linux ako ne koristite Ubuntu ili Linux izveden iz Debiana.

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

To je uspjelo, sada su sve datoteke ".prg", a u direktoriju nema datoteka ".prog".

Što se dogodilo s tim vremenom?

Objasnimo taj djelić magije, u tri dijela.

Prvi dio je naziv naredbe, rename(ili prename, ili perl-rename, za druge distribucije).

Zadnji dio je *.prog, što govori renameda radi na sve „.prog” datoteke.

Srednji dio definira rad želimo biti učinjeno na svakom datoteke. sZamjena sredstva. Prvi pojam ( .prog) je ono što renameće tražiti u svakom imenu datoteke, a drugi pojam ( .prg) je ono čime će se zamijeniti.

Srednji dio naredbe ili središnji izraz Perl je 'regularni izraz' i to je ono što renamenaredbi daje fleksibilnost.

Promjena ostalih dijelova naziva datoteke

Dosad smo promijenili nastavke imena datoteka, izmijenimo druge dijelove naziva datoteka.

U direktoriju je puno datoteka C izvornog koda. Sva imena datoteka imaju prefiks "slang_". To možemo provjeriti kod ls.

ls sl * .c

Zamijenit ćemo sve pojave "slang_" s "sl_". Format naredbe već nam je poznat. Samo mijenjamo pojam za pretraživanje, zamjenski pojam i vrstu datoteke.

preimenovati 's / sleng_ / sl_' * .c

Ovaj put tražimo ".c" datoteke i "sleng_". Kad god se "slang_" pronađe u nazivu datoteke, zamjenjuje se s "sl_".

Rezultat te naredbe možemo provjeriti ponavljanjem lsnaredbe odozgo s istim parametrima:

ls sl * .c

Brisanje dijela naziva datoteke

Dio naziva datoteke možemo ukloniti zamjenom pojma za pretraživanje ničim.

ls * .c
preimenovati 's / sl _ //' * .c
ls * .c

Iz lsnaredbe možemo vidjeti da su sve naše datoteke .c dodane sa "sl_". Riješimo se toga u potpunosti.

renameNaredba slijedi isti format kao i prije. Tražit ćemo datoteke ".c". Pojam za pretraživanje je "sl_", ali ne postoji zamjenski pojam. Dvije kose crte bez ičega između njih ne znače ništa, prazan niz.

renameobrađivat će svaku datoteku ".c" redom. Tražit će "sl_" u nazivu datoteke. Ako se pronađe, neće biti zamijenjen ničim. Drugim riječima, pojam za pretraživanje se briše.

Druga upotreba lsnaredbe potvrđuje da je prefiks "sl_" uklonjen iz svake datoteke ".c".

Ograničite promjene na određene dijelove naziva datoteka

Upotrijebimo ls za gledanje datoteka koje u nazivu imaju niz "param". Tada ćemo renametaj niz upotrijebiti za zamjenu niza "parametar". Iskoristit ćemo lsjoš jednom kako bismo vidjeli učinak renamenaredbe na te datoteke.

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

Pronađene su četiri datoteke koje u nazivu imaju "param". param.c, param_one.c i param_two.c imaju "param" na početku svog imena. third_param.c ima "param" na kraju svog imena, neposredno prije proširenja.

renameNaredba će se tražiti „param” svugdje u datoteke, te ga zamijeniti s „parametrom” u svim slučajevima.

Druga upotreba  lsnaredbe pokazuje nam da se upravo to dogodilo. Bez obzira je li "param" bio na početku ili na kraju naziva datoteke, zamijenjen je s "parametar".

Možemo koristiti Perlove metaznakove za pročišćavanje ponašanja srednjeg izraza. Metaznakovi su simboli koji predstavljaju položaje ili nizove znakova. Na primjer, ^znači "početak niza", $znači "kraj niza" i .znači bilo koji pojedinačni znak (osim znaka novog retka).

Koristit ćemo početak znakovnog niza metacharacter ( ^) da ograničimo našu pretragu na početak imena datoteka.

ls * param * .c
preimenovati 's / ^ parametar / vrijednost /' * .c
ls * param * .c
ls vrijednost * .c

Datoteke koje smo ranije preimenovali navedene su, a možemo vidjeti da se niz "parametar" nalazi na početku triju naziva datoteka i na kraju jednog od naziva datoteka.

Naša renamenaredba koristi znak (^metapočetka retka  ) ispred pojma za pretraživanje "parametar". To govori renameda se pojam za pretraživanje smatra pronađenim samo ako je na početku naziva datoteke. Niz pretraživanja "parametar" zanemarit će se ako se nalazi bilo gdje drugdje u nazivu datoteke.

Provjerom pomoću ls, možemo primijetiti da naziv datoteke koji je na kraju naziva datoteke imao "parametar" nije izmijenjen, ali za tri imena datoteka koja su na početku imena imala "parametar", niz pretraživanja zamijenjen je zamjenskim pojmom "vrijednost."

Moć renamelaži u moći Perla. Na raspolaganju vam je sva snaga Perla.

Pretraživanje s grupiranjima

renameima još trikova u rukavu. Razmotrimo slučaj kada biste mogli imati datoteke sa sličnim nizovima u svojim imenima. Nisu potpuno iste žice, tako da jednostavno pretraživanje i zamjena ovdje neće raditi.

U ovom primjeru ls provjeravamo koje datoteke imamo i koje počinju s "str". Postoje dva, string.c i daviti.c. Tehniku ​​koja se naziva grupiranje možemo preimenovati odjednom.

Središnji izraz ove renamenaredbe tražit će nizove unutar imena datoteka koji imaju slijed znakova "stri" ili "stra", pri čemu iza tih slijedova odmah slijedi "ng". Drugim riječima, naš pojam za pretraživanje tražit će "niz" i "zadavljen". Zamjenski izraz je "prasak".

ls str * .c
preimenovati 's / (stri | stra) ng / bang /' * .c
zabrani * .c

Korištenje  ls drugog puta potvrđuje da je string.c postao bang.c, a strangle.c sada bangle.c.

Korištenje prijevoda s preimenovanjem

renameNaredba može obavljati radnje na nazive datoteka pod nazivom prijevodi. Jednostavan primjer prijevoda bio bi prisiljavanje niza datoteka u velika slova.

U renamenaredbi ispod primijetite da ne koristimo znak s/ za pokretanje središnjeg izraza, već ga koristimo y/. To govori  renameda ne izvodimo zamjenu; izvodimo prijevod.

a-z Pojam Perl izraz koji označava sve mala slova u nizu od A do Z. Slično tome, A-Z izraz predstavlja sva velika slova u nizu od A do Ž.

Središnji izraz u ovoj naredbi mogao bi se parafrazirati kao "ako se u nazivu datoteke nađe neko od malih slova od a do z, zamijenite ih odgovarajućim znakovima iz niza velikih slova od A do Ž".

Da biste prisilili imena datoteka svih datoteka ".prg" na velika slova, upotrijebite ovu naredbu:

preimenovati 'y / az / AZ /' * .prg

ls * .PRG

Na lsnaredbu pokazuje nam da su svi „.prg” imena datoteka su sada u velika slova. Zapravo, da budemo strogo točni, oni više nisu datoteke .prg. To su datoteke .PRG. Linux razlikuje velika i mala slova.

Tu posljednju naredbu možemo preokrenuti okretanjem položaja a-zi A-Z termina u središnjem izrazu.

preimenovati 'y / AZ / az /' * .PRG

ls * .prg

Vi (ne | učinite) ne naučite Perl u pet minuta

Upoznavanje Perla dobro je potrošeno vrijeme. No, da biste počeli koristiti mogućnosti renamenaredbe za uštedu vremena , uopće ne trebate imati puno znanja o Perlu da biste uživali velike prednosti u snazi, jednostavnosti i vremenu.