Het Gebruik van de naam van de Opdracht op Linux

0
348
Fatmawati Achmad Zaenuri/Shutterstock.com

Aan de slag met het bestand hernoemen krachtpatser van de Linux wereld en geven mv—en jezelf—een rust. Naam is flexibel, snel, en soms zelfs gemakkelijker. Hier is een tutorial om deze krachtpatser van een opdracht.

Wat is er Mis Met mv?

Er is niets mis met mv . De opdracht heeft een boete van een baan, en het is te vinden op alle Linux distributies, in macOS, en in andere Unix-achtige operating systemen. Het is dus altijd beschikbaar. Maar soms moet je gewoon een bulldozer, niet een schop.

Het mv commando heeft een doel in het leven, en dat is om bestanden te verplaatsen. Het is een gelukkig neveneffect dat het kan worden gebruikt voor het verplaatsen van een bestaand bestand naar een nieuw bestand met een nieuwe naam. Het netto-effect is de naam van het bestand, dus we krijgen wat we willen. Maar mv is niet een speciaal bestand hernoemen tool.

Hernoemen van een Bestand Met mv

Gebruik mv om de naam van een bestand van het type mv, een spatie, de naam van het bestand, een ruimte, en de nieuwe naam die u wilt het bestand te hebben. Druk vervolgens op Enter.

U kunt gebruik maken van ls te controleren het bestand is gewijzigd.

mv oldfile.txt newfile.txt
ls *.txt

Het hernoemen van Meerdere Bestanden met mv

Dingen krijgen lastiger als u de naam wilt wijzigen van meerdere bestanden. mv heeft geen mogelijkheid om te gaan met het hernoemen van meerdere bestanden. U moet de toevlucht tot het gebruik van een aantal handige Bash trucs. Dat is fijn als je weet wat het midden-grade command-line fu, maar de complexiteit van het hernoemen van meerdere bestanden met mv staat in schril contrast met het gemak van het gebruik van mv om de naam van een enkel bestand.

Zaken escaleren snel.

Laten we zeggen we hebben een map met verschillende bestanden van verschillende types. Sommige van deze bestanden hebben een “.prog” – extensie. We willen wijzigen op de commando-regel, zodat ze een “.prg” – extensie.

Hoe doen we stoeien mv in het doen dat voor ons? Laten we een kijkje nemen op de bestanden.

ls *.prog -l

Hier is een manier om het te doen die niet de toevlucht tot het schrijven van een werkelijke Bash-script bestand.

voor f in *.prog; do mv — “f $” “${f%.prog}.prg”

Deed dat in zijn werk? Laten we de bestanden controleren en te zien.

ls *.pr*

Dus, ja, het werkte. Ze zijn allemaal “.prg” bestanden nu, en er zijn geen “.prog” bestanden in de map.

Wat Is Er Zojuist Gebeurd?

Wat heeft die lange opdracht eigenlijk? Laten we het af te breken.

voor f in *.prog; do mv — “f $” “${f%.prog}.prg”

Het eerste deel begint met een lus die gaat voor het verwerken van elk “.prog” bestand in de map, op zijn beurt.

Het volgende deel staat wat de verwerking te doen. Het is met behulp van mv tot elk bestand verplaatsen naar een nieuw bestand. De nieuw bestand wordt benoemd met het oorspronkelijke bestand de naam van exclusief “.prog” deel. Een nieuwe extensie.prg” zal in plaats daarvan worden gebruikt.

Er moet een Eenvoudiger Manier

Zeer zeker. Het is de opdracht naam wijzigen.

hernoemen is geen onderdeel van een standaard Linux-distributie, dus je moet om het te installeren. Het heeft ook een andere naam in verschillende families van Linux, maar ze werken allemaal op dezelfde manier. Je hoeft het alleen maar te vervangen door de juiste naam van de opdracht volgens de Linux-smaak die u gebruikt.

in Ubuntu en Debian-afgeleide distributies installeren naam zoals deze:

sudo apt-get install naam

In Fedora en RedHat-afgeleide distributies installeren prename als deze. Opmerking de oorspronkelijke “p” staat voor Perl.

sudo dnf installeren prename

Om het te installeren in Manjaro Linux, gebruik je het volgende commando. Merk op dat de naam commando wordt aangeroepen perl-naam wijzigen.

sudo pacman -Syu perl-de naam van

Laten we Dat Doen Opnieuw

En deze keer gebruiken we de naam wijzigen. We zullen terugdraaien van de klok, zodat wij een set van “.prog” – bestanden.

ls *.prog

Laten we nu gebruik je het volgende commando om ze te hernoemen. We zullen dan contact op met ls of het werkte. Vergeet niet om een vervangend naam met de juiste naam van de opdracht voor uw Linux-als je geen gebruik van Ubuntu of Debian-afgeleide Linux.

naam wijzigen ‘s/.prog/.prg/’ *.prog
ls *.pr*

Dat werkte, ze zijn nu allemaal “.prg” bestanden, en er zijn geen “.prog” bestanden in de directory.

Wat Gebeurde Er Deze Keer?

Laten we uitleggen dat beetje magie, in drie delen.

Het eerste deel is de naam van de opdracht, de naam (of prename of perl-de naam , voor de andere uitkeringen).

Het laatste deel is *.prog, die vertelt naam om te werken op alle “.prog” – bestanden.

Het middelste deel bepaalt het werk dat we willen doen op elke bestandsnaam. De s betekent vervangen. De eerste termijn (.prog) is wat de naam zal zoeken in elke bestandsnaam en de tweede termijn in.prg) is wat het zal worden vervangen door.

Het middelste deel van de opdracht, of de centrale expressie, is een Perl ‘reguliere expressie’ en het is wat geeft de opdracht naam wijzigen van haar flexibiliteit.

Het veranderen van Andere Onderdelen van een Bestandsnaam

We hebben gewijzigd bestandsextensies zo ver, laten we wijzigen de andere delen van de bestandsnamen.

In de map zijn een heleboel van de C broncode bestanden. Alle bestandsnamen worden aangeduid met “slang_”. We kunnen dit controleren met ls.

ls sl*.c

We gaan vervang alle exemplaren van “slang_” met “sl_”. Het formaat van de opdracht is al bekend bij ons. We zijn gewoon het veranderen van de zoekterm, de vervanging van de term, en het bestandstype.

naam wijzigen ‘s/slang_/sl_’ *.c

Dit keer zijn we naar op zoek “.c” bestanden zoeken “slang_”. Wanneer “slang_” is te vinden in een bestandsnaam is vervangen door “sl_”.

We kunnen controleren of het resultaat van die opdracht door het herhalen van het ls commando van boven met dezelfde parameters:

ls sl*.c

Het verwijderen van een Deel van een Bestandsnaam

We kunnen verwijderen van een deel van een bestandsnaam door het vervangen van de zoekterm met niets.

ls *.c
naam wijzigen ‘s/sl_//’ *.c
ls *.c

We kunnen zien aan de opdracht ls dat onze “.c” – bestanden worden voorafgegaan door “sl_”. Laten we te ontdoen van dat geheel.

De opdracht naam wijzigen volgt dezelfde indeling als voorheen. We gaan op zoek naar “.c” – bestanden. De zoekterm is “sl_”, maar er is geen vervanging termijn. Twee backslashes zonder dat er iets tussen hen betekent niets, een lege tekenreeks.

naam zal elk proces “.c” bestand in de beurt. Het zal zoeken naar “sl_” in de bestandsnaam. Als het wordt gevonden, zal deze worden vervangen door niets. In andere woorden, de zoekterm wordt verwijderd.

Het tweede gebruik van het ls commando bevestigt dat de “sl_” voorvoegsel is verwijderd uit elk “.c” – bestand.

Limiet Wijzigingen aan Specifieke Onderdelen van Bestandsnamen

Laten we gebruik maken van ls om te kijken naar bestanden die de string “param” in de bestandsnaam. Vervolgens gebruiken we wijzigen om dat te vervangen tekenreeks de tekenreeks “parameter”. We gebruiken ls eenmaal meer om het effect te zien van de opdracht naam wijzigen heeft gehad op die bestanden in.

ls *param*
naam wijzigen ‘s/parameter/parameter’ *.c
ls *param*

Vier bestanden worden gevonden die “param” in de bestandsnaam. param.c, param_one.c, en param_two.c allemaal “param” bij de start van hun naam. third_param.c heeft “param” aan het eind van zijn naam, net voordat de extensie.

De opdracht naam wijzigen gaat zoeken naar “param” overal in de bestandsnaam op en vervang het met “parameter” in alle gevallen.

Het tweede gebruik van het ls commando toont ons dat dat is precies wat er is gebeurd. Of “param” was aan het begin of aan het einde van de bestandsnaam, het is vervangen door “parameter.”

We kunnen gebruik maken van Perl is metatekens voor het verfijnen van het gedrag van het midden-expressie. Metatekens zijn symbolen die staan voor posities of sequenties van karakters. Bijvoorbeeld, ^ betekent “het begin van een string,” $ betekent “einde van een string,” en . betekent elk enkel karakter (afgezien van een newline-teken).

We gaan gebruik maken van de start van de string metateken ( ^ ) om het beperken van onze zoektocht naar de start van de bestandsnamen.

ls *param*.c
naam wijzigen ‘s/^parameter/waarde/’ *.c
ls *param*.c
ls-waarde*.c

De bestanden hernoemd eerder zijn vermeld, en kunnen we de string “parameter” is bij de start van drie bestandsnamen en het is op het einde van één van de bestandsnamen.

Onze opdracht naam wijzigen gebruik maakt van het begin van de regel (^) metateken voor de zoekterm “parameter.” Dit vertelt geef alleen rekening houden met de zoekterm te hebben gevonden als het is aan het begin van de bestandsnaam. De search string “parameter” wordt genegeerd als het ergens anders in de bestandsnaam.

Moeite met ls, kunnen we zien dat de bestandsnaam die had “parameter” aan het einde van de bestandsnaam is niet gewijzigd, maar de drie namen die had “parameter” bij de start van hun namen had de zoek string vervangen door de vervangende term “waarde”.

De kracht van de naam ligt in de kracht van Perl. Alle van de kracht van Perl is tot uw beschikking.

Zoeken Met Groepen

wijzig heeft nog meer trucjes in petto. Laten we eens naar de zaak waar je zou kunnen hebben bestanden met gelijksoortige strings die in hun namen. Ze zijn niet precies dezelfde snaren, dus een simpele zoekopdracht en vervanging niet werken hier.

In dit voorbeeld maken we gebruik van ls om te controleren welke bestanden we hebben die beginnen met “str”. Er zijn twee van deze reeks.c en wurgen.c. We kunnen de naam van beide snaren in een keer met behulp van een techniek genaamd groeperen.

De centrale expressie van deze opdracht naam wijzigen zal zoeken naar tekenreeksen in bestanden die het karakter hebben van lampjes “stri” of “stra” waar deze sequenties zijn, onmiddellijk gevolgd door een “ng”. In andere woorden, onze zoekterm is te gaan voor “string” en “de strang”. De vervanging term is “bang”.

ls str*.c
naam wijzigen ‘s/(stri|stra)ng/bang/’ *.c
ls ban*.c

Met ls een tweede keer bevestigt dat de string.c is geworden bang.c en wurgen.c is nu bangle.c.

Met behulp van Vertalingen Met naam

De opdracht naam wijzigen kunt u acties uitvoeren op de bestandsnamen genoemd vertalingen. Een eenvoudig voorbeeld van een vertaling zou zijn om kracht uit een set van bestandsnamen in hoofdletters.

In de opdracht naam wijzigen onderaan merken dat we niet met een s/ starten van de centrale expressie gebruiken we y/. Dit vertelt hernoemen we het niet uitvoeren van een substitutie; we zijn het uitvoeren van een vertaling.

De a-z termijn is een Perl uitdrukking dat betekent dat alle kleine letters in de volgorde van a tot z. Ook de A-Z term vertegenwoordigt alle hoofdletters in de reeks van A tot Z.

De centrale expressie in deze opdracht kan worden geparafraseerd als “als een van de kleine letters van a tot z te vinden zijn in de bestandsnaam vervangen door de overeenkomstige karakters uit de reeks van hoofdletters van A tot Z.”

Te dwingen de bestandsnamen van alle “.prg” – bestanden worden naar hoofdletters, gebruik je dit commando:

wijzig de naam ‘y/a-z/A-Z/’ *.prg

ls *.PRG

Het ls commando laat ons zien dat alle “.prg” bestandsnamen zijn nu in hoofdletters. In feite, worden strikt nauwkeurig, ze zijn niet “.prg” bestanden meer. Ze zijn “.PRG” bestanden. Linux is hoofdlettergevoelig.

We kunnen keren die laatste opdracht door het omkeren van de positie van de a-z en a-Z termen in het centrum van expressie.

wijzig de naam ‘y/A-Z/a-z/’ *.PRG

ls *.prg

U (Wo|Do)n niet Leren Perl in Vijf Minuten

Aan de slag met Perl is goed bestede tijd. Maar om te beginnen met de besparing van tijd en mogelijkheden van de opdracht naam wijzigen, hoeft u niet veel Perl kennis te profiteren van grote voordelen in kracht, eenvoud en tijd.

LEES VERDER

  • “Hoe Stop je met Mensen van het Stelen van Uw Pakketten
  • “Waarom Doen Streaming Diensten Extra Kosten in rekening voor HD en 4K?
  • “Hoe Stream UFC 238 Cejudo vs. Moraes Online
  • “Hoe de Input Kaomoji op Windows 10 (╯°□°)╯︵ ┻━┻
  • “Hoe kan ik de 2019 FIFA Women’ s World Cup Online (Zonder Kabel)