Zoeken op website

Hernoemen - Een opdrachtregelprogramma voor het hernoemen van meerdere bestanden in Linux


We gebruiken vaak de opdracht “mv” om de naam van een enkel bestand te wijzigen in Linux. Het snel hernoemen van meerdere of een groep bestanden maakt het echter een zeer moeilijke taak in een terminal.

Linux wordt geleverd met een zeer krachtige ingebouwde tool genaamd hernoemen. De opdracht hernoemen wordt gebruikt om meerdere of een groep bestanden te hernoemen, bestanden te hernoemen naar kleine letters, bestanden te hernoemen naar hoofdletters en bestanden te overschrijven met behulp van perl-expressies.

De opdracht “hernoemen” is een onderdeel van het Perl-script en bevindt zich onder “/usr/bin/” op veel Linux-distributies. U kunt de opdracht “welke” uitvoeren om de locatie van de opdracht voor het wijzigen van de naam te achterhalen.

which rename
/usr/bin/rename
De basissyntaxis van het commando Hernoemen
rename 's/old-name/new-name/' files

Het commando hernoemen wordt geleverd met enkele optionele argumenten, samen met de verplichte perl-expressie die het commando hernoemen begeleidt om daadwerkelijk werk te doen.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: Namen van bestanden afdrukken waarvan de naam is gewijzigd.
  2. -n: laat zien welke bestanden hernoemd zouden zijn.
  3. -f: Forceer het overschrijven van bestaande bestanden.
  4. perlexpr: Perl-expressie.

Voor een beter begrip van dit hulpprogramma hebben we in het artikel enkele praktische voorbeelden van deze opdracht besproken.

1. Een eenvoudig voorbeeld van een hernoemingsopdracht

Stel dat u een aantal bestanden heeft met de extensie “.html” en u wilt alle bestanden van “.html” hernoemen naar “.php” in één keer. Voer bijvoorbeeld eerst een “ls -l” uit om de lijst met bestanden met de extensie “.html” te controleren.

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Nu wil je de extensie van al deze bestanden wijzigen van “.html” naar “.php“. U kunt de volgende opdracht “hernoemen” gebruiken met perl-expressie, zoals hieronder weergegeven.

ravisaive@tecmint:~$ rename 's/\.html$/\.php/' *.html

Opmerking: in het bovenstaande commando hebben we twee argumenten gebruikt.

  1. Het eerste argument is een perl-expressie die .html vervangt door .php.
  2. Het tweede argument vertelt het hernoemcommando om alle bestanden te vervangen door *.php.

Laten we verifiëren of alle bestanden zijn hernoemd naar de extensie “.php”, door ls -l op de prompt te gebruiken.

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.php

Nu kun je hierboven zien dat alle html-bestanden zijn hernoemd naar php.

2. Controleer de wijzigingen voordat u de opdracht Hernoemen uitvoert

Terwijl u cruciale of belangrijke hernoemingstaken uitvoert, kunt u altijd de wijzigingen controleren door de hernoemingsopdracht uit te voeren met het argument “-n”. De parameter “-n” vertelt u precies welke veranderingen er zouden plaatsvinden, maar de veranderingen worden niet echt doorgevoerd. Hier is het voorbeeld van de onderstaande opdracht.

ravisaive@tecmint:~$ rename -n 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

Opmerking: De bovenstaande opdrachtuitvoer geeft alleen wijzigingen weer, maar in werkelijkheid worden de wijzigingen niet doorgevoerd, tenzij u de opdracht uitvoert zonder de schakelaar “-n”.

3. Afdrukken hernoemen uitvoer

We hebben gezien dat het commando hernoemen geen enkele informatie weergeeft over de wijzigingen die het wel doet. Dus als je de details van het commando voor het hernoemen wilt hebben (zoals we deden met de optie “-n”), gebruiken we hier de optie “-v” om het volledige bestand af te drukken details van alle wijzigingen die zijn aangebracht door de opdracht Hernoemen met succes.

ravisaive@tecmint:~$ rename -v 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

4. Converteer alle kleine letters naar hoofdletters en omgekeerd

Om alle bestanden met kleine letters namen batchgewijs te hernoemen naar hoofdletters. Ik wil bijvoorbeeld al deze volgende bestanden verbergen van klein naar >hoofdletter.

Van kleine naar hoofdletters
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Gebruik gewoon de volgende opdracht met perl-expressie.

ravisaive@tecmint:~$ rename 'y/a-z/A-Z/' *.html

Nadat u het bovenstaande commando heeft uitgevoerd, kunt u de wijzigingen controleren door “ls -l“ uit te voeren.

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 SPORTS.HTML

U kunt zien dat de bovenstaande opdracht feitelijk alle bestandsnamen in kleine letters (met de extensie .HTML) heeft hernoemd naar hoofdletters.

Van hoofdletter naar kleine letter

Op dezelfde manier kunt u ook alle hoofdletters naar kleine letters converteren met behulp van de volgende opdracht.

ravisaive@tecmint:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

5. Gebruik een hoofdletter voor de eerste letter van de bestandsnaam

Gebruik de volgende opdracht om alleen de eerste letter van elke bestandsnaam met een hoofdletter te schrijven.


rename 's/\b(\w)/\U$1/g' *.ext

6. Bestaande bestanden overschrijven

Als u bestaande bestanden met geweld wilt overschrijven, gebruikt u de optie “-f”, zoals hieronder weergegeven.

ravisaive@tecmint:~$ rename -f 's/a/b/' *.html

Als je meer wilt weten over het hernoemen commando, typ dan “man rename” in de terminal.

De opdracht hernoemen is erg handig als u te maken heeft met het meerdere keren of batchgewijs hernoemen van bestanden vanaf de opdrachtregel. Probeer het eens en laat me weten in hoeverre dit nuttig is bij het hernoemen van bestanden.