Com s'utilitza l'ordre de canviar el nom a Linux

Poseu-vos al dia amb la potència de canvi de nom de fitxers del món Linux i doneu mv—I vosaltres mateixos — un descans. Canvia el nom és flexible, ràpid i, de vegades, fins i tot més fàcil. Aquí teniu un tutorial per a aquesta potent comanda.

Què passa amb mv?

No passa res mv . L’ordre fa molt bé i es troba a totes les distribucions de Linux, en macOS i en altres sistemes operatius similars a Unix. Per tant, sempre està disponible. Però de vegades només necessiteu una excavadora, no una pala.

El mv L'ordre té un propòsit a la vida, i és moure fitxers. És un efecte secundari feliç que es pot utilitzar per moure un fitxer existent dins un fitxer nou, amb un nom nou. L’efecte net és canviar el nom del fitxer, de manera que aconseguim el que volem. Però mv no és una eina dedicada per canviar el nom de fitxers.

Canviar el nom d’un fitxer únic amb mv

Usar mv per canviar el nom d’un tipus de fitxer mv, un espai, el nom del fitxer, un espai i el nou nom que vulgueu que tingui. A continuació, premeu Retorn.

Pots fer servirls per comprovar que s'ha canviat el nom del fitxer.

mv oldfile.txt newfile.txt
ls * .txt

Canviar el nom de diversos fitxers amb mv

Les coses es compliquen quan es vol canviar el nom de diversos fitxers. mv no té capacitat per fer front al canvi de nom de diversos fitxers. Heu de recórrer a l’ús d’uns astuciosos trucs de Bash. Està bé si coneixeu alguns nivells de línia d’ordres de grau mitjà, però la complexitat de canviar el nom de diversos fitxers mv contrasta amb la facilitat d’ús mv per canviar el nom d’un sol fitxer.

Les coses augmenten ràpidament.

Suposem que tenim un directori amb diversos fitxers, de diferents tipus. Alguns d'aquests fitxers tenen una extensió ".prog". Volem canviar-los el nom a la línia d’ordres perquè tinguin una extensió “.prg”.

Com ens barallem mv fer això per nosaltres? Vegem els fitxers.

ls * .prog -l

Aquí hi ha una manera de fer-ho que no recorre a escriure un fitxer d’escriptura Bash real.

per a f en * .prog; fer mv - "$ f" "$ {f% .prog} .prg"

¿Vaig funcionar? Comprovem els fitxers i veiem.

ls * .pr *

Per tant, sí, va funcionar. Ara són tots fitxers ".prg" i no hi ha fitxers ".prog" al directori.

El que acaba de passar?

Què va fer en realitat aquest llarg comandament? Desglossem-ho.

per a f en * .prog; fer mv - "$ f" "$ {f% .prog} .prg"

La primera part inicia un bucle que processarà cada fitxer ".prog" al directori, al seu torn.

La següent part diu què farà el processament fer. S'està utilitzantmv per moure cada fitxer a un fitxer nou. El nou fitxer s’anomenarà amb el nom del fitxer original, excloent la part “.prog”. S'utilitzarà una nova extensió de ".prg".

Hi ha d’haver un camí més senzill

Definitivament. Això és el canviar el nom comandament.

canviar el nom no forma part d'una distribució estàndard de Linux, de manera que l'haureu d'instal·lar. També té un nom diferent en diferents famílies de Linux, però totes funcionen de la mateixa manera. Només haurà de substituir el nom d’ordre adequat segons el gust de Linux que utilitzeu.

a les distribucions derivades d'Ubuntu i Debian que instal·leu canviar el nom com això:

sudo apt-get install canvia el nom

A les distribucions derivades de Fedora i RedHat que instal·leu prename com això. Tingueu en compte la "p" inicial, que significa Perl.

sudo dnf install prename

Per instal·lar-lo a Manjaro Linux utilitzeu l'ordre següent. Tingueu en compte que es diu l’ordre de canvi de nom perl-rename.

sudo pacman -Syu perl-rename

Fem-ho de nou

I aquesta vegada farem servir canviar el nom. Tornarem enrere el rellotge de manera que tinguem un conjunt de fitxers ".prog".

ls * .prog

Ara fem servir l'ordre següent per canviar-los el nom. Després ho comprovarem amb ls si funcionava. Recordeu substituir canviar el nom amb el nom d’ordre adequat per al vostre Linux si no feu servir Ubuntu o Linux derivat de Debian.

canvieu el nom de 's / .prog / .prg /' * .prog
ls * .pr *

Això va funcionar, ara són tots fitxers ".prg" i no queden fitxers ".prog" al directori.

Què va passar aquest temps?

Expliquem aquest tros de màgia, en tres parts.

El primer part és el nom de l'ordre, canviar el nom (o prename o bé perl-rename , per a la resta de distribucions).

El últim part és * .prog, que explica canviar el nom per operar en tots els fitxers ".prog".

El mig part defineix el treball que volem fer en cada nom de fitxer. El s significa substitut. El primer terme (.prog) es que canviar el nom cercarà a cada nom de fitxer i al segon terme (.prg) és amb què es substituirà.

La part central de l’ordre, o expressió central, és una ‘expressió regular’ de Perl i és la que dóna canviar el nom mana la seva flexibilitat.

Canvi d'altres parts d'un nom de fitxer

Fins ara hem canviat les extensions de nom de fitxer; modificem altres parts dels noms de fitxer.

Al directori hi ha molts fitxers de codi font C. Tots els noms de fitxer tenen el prefix de "argot_". Ho podem comprovar amb ls.

ls sl * .c

Anem a substituir totes les aparicions de "argot_" per "sl_". El format de l’ordre ja ens és familiar. Només estem canviant el terme de cerca, el de substitució i el tipus de fitxer.

canvieu el nom de 's / slang_ / sl_' * .c

Aquesta vegada busquem fitxers ".c" i cerquem "argot_". Sempre que es troba "slang_" en un nom de fitxer, se substitueix per "sl_".

Podem comprovar el resultat d’aquesta ordre repetint el fitxer ls ordre des de dalt amb els mateixos paràmetres:

ls sl * .c

Supressió d'una part d'un nom de fitxer

Podem eliminar una part d’un nom de fitxer substituint el terme de cerca per res.

ls * .c
canvieu el nom de 's / sl _ //' * .c
ls * .c

Podem veure des del ls ordeneu que tots els nostres fitxers ".c" estiguin precedits de "sl_". Eliminem-ho del tot.

El canviar el nom L'ordre segueix el mateix format que abans. Anem a buscar fitxers ".c". El terme de cerca és "sl_", però no hi ha cap terme de substitució. Dues barres invertides sense res entre elles significa res, una cadena buida.

canviar el nom processarà cada fitxer ".c" al seu torn. Es buscarà "sl_" al nom del fitxer. Si es troba, serà substituït per res. En altres paraules, se suprimeix el terme de cerca.

El segon ús del fitxer ls L'ordre confirma que el prefix "sl_" s'ha eliminat de tots els fitxers ".c".

Limiteu els canvis a parts específiques dels noms de fitxer

Utilitzem-ho ls per mirar fitxers que tinguin la cadena "param" al seu nom de fitxer. Després farem servir canviar el nom per substituir aquesta cadena per la cadena "paràmetre". L’utilitzarem ls una vegada més per veure l'efecte canviar el nom l'ordre ha tingut en aquests fitxers.

ls * param *
canvieu el nom de "s / param / paràmetre" * .c
ls * param *

Es troben quatre fitxers que tenen "param" al nom del fitxer. param.c, param_one.c i param_two.c tots tenen "param" al començar del seu nom. third_param.c té "param" a final del seu nom, just abans de l'extensió.

El canviar el nom L'ordre cercarà "param" a tot el nom del fitxer i el substituirà per "paràmetre" en tots els casos.

El segon ús del fitxerls l'ordre ens mostra que això és exactament el que ha passat. Tant si "param" es trobava a l'inici com al final del nom del fitxer, s'ha substituït per "paràmetre".

Podem utilitzar els metacaracters de Perl per refinar el comportament de l’expressió mitjana. Els metacaràcters són símbols que representen posicions o seqüències de personatges. Per exemple, ^ significa "inici d'una cadena" $ significa "final d'una cadena" i . significa qualsevol caràcter (a part d'un caràcter de línia nova).

Farem servir l’inici del metacaracter de la cadena ( ^ ) per restringir la nostra cerca al començament dels noms de fitxer.

ls * param * .c
canvieu el nom de 's / ^ paràmetre / valor /' * .c
ls * param * .c
ls valor * .c

Es mostren els fitxers que hem canviat de nom anteriorment i podem veure que la cadena "paràmetre" es troba al començament de tres noms de fitxer i al final d'un dels noms de fitxer.

El nostre canviar el nom l'ordre utilitza l'inici de línia(^) metacaracter abans del terme de cerca "paràmetre". Això explica canviar el nom per considerar que el terme de cerca només s’ha trobat si es troba al començament del nom del fitxer. La cadena de cerca "paràmetre" s'ignorarà si es troba en qualsevol altre lloc del nom del fitxer.

Comprovant amb ls, podem veure que el nom de fitxer que tenia "paràmetre" al fitxer final del nom de fitxer no s'ha modificat, però els tres noms de fitxer que tenien un "paràmetre" al fitxer començar dels seus noms s'ha substituït la cadena de cerca pel terme substitutiu "valor".

El poder de canviar el nom rau en el poder de Perl. Tot el poder de Perl està a la vostra disposició.

Cerca amb agrupacions

canviar el nom encara té més trucs a la màniga. Considerem el cas en què és possible que tingueu fitxers amb cadenes similars al seu nom. No són exactament les mateixes cadenes, de manera que una cerca i una substitució senzilles no funcionaran aquí.

En aquest exemple fem servir ls per comprovar quins fitxers tenim que comencen per "str". N’hi ha dos, string.c i strangle.c. Podem canviar el nom de les dues cadenes alhora mitjançant una tècnica anomenada agrupació.

L’expressió central d’aquest canviar el nom L'ordre cercarà cadenes dins dels noms de fitxer que tinguin la seqüència de caràcters "stri" o bé "Stra" on aquestes seqüències són seguides immediatament per "ng". En altres paraules, el nostre terme de cerca buscarà "cadena" i "Estrany". El terme de substitució és "explosió".

ls str * .c
canviar el nom de 's / (stri | stra) ng / bang /' * .c
prohibeix * .c

Utilitzantls una segona vegada confirma que string.c s'ha convertit en bang.c i que strangle.c ara és bangle.c.

Ús de traduccions amb canvi de nom

El canviar el nom L'ordre pot realitzar accions en noms de fitxer anomenats traduccions. Un exemple senzill de traducció seria forçar un conjunt de noms de fitxer a majúscules.

A la canviar el nom següent, observeu que no estem fent servir cap s / per iniciar l’expressió central, ho fem servir y /. Això explicacanviar el nom no realitzem cap substitució; realitzem una traducció.

El a-z terme és una expressió de Perl que significa tots els caràcters en minúscula de la seqüència de la a la la z. De la mateixa manera, el A-Z terme representa totes les lletres majúscules de la seqüència de A a Z.

L'expressió central d'aquesta ordre es podria parafrasejar com "si es troba alguna de les lletres minúscules de la a a la z al nom del fitxer, substituïu-les pels caràcters corresponents de la seqüència de caràcters majúscules de la A a la Z".

Per forçar els noms de fitxer de tots els fitxers ".prg" a majúscules, utilitzeu aquesta ordre:

canvieu el nom de "y / a-z / A-Z /" * .prg

ls * .PRG

El ls L'ordre ens mostra que tots els noms de fitxer ".prg" estan ara en majúscules. De fet, per ser estrictament precisos, ja no són fitxers ".prg". Són fitxers ".PRG". Linux distingeix entre majúscules i minúscules.

Podem invertir aquesta última ordre invertint la posició del fitxer a-z i A-Z termes en l’expressió central.

canvieu el nom de "y / A-Z / a-z /" * .PRG

ls * .prg

Vostè (Wo | Do) no aprèn Perl en cinc minuts

Conèixer Perl és un temps molt aprofitat. Però per començar a utilitzar les funcions d'estalvi de temps canviar el nom ordre, no cal tenir gaire coneixement de Perl per obtenir grans beneficis en potència, simplicitat i temps.


$config[zx-auto] not found$config[zx-overlay] not found