Hoe meerdere bestanden tegelijk te hernoemen op Linux
het hernoemen van meerdere bestanden op Linux klinkt als een eenvoudige taak, maar het kan nogal complex worden. Het is mogelijk om bestanden in bulk te hernoemen met het mv
commando en een beetje Bash scripting, of gebruik de mmv
en rename
hulpprogramma ‘ s-die standaard niet geïnstalleerd zijn. In deze handleiding laten we verschillende voorbeelden zien voor het hernoemen van meerdere bestanden tegelijk vanaf de Linux command line.
hernoem meerdere bestanden met mv
het mv
commando is een standaard onderdeel van Linux en kan worden gebruikt om meerdere bestanden te hernoemen, maar een beetje scripting is vereist om de taak te doen. Sommige voorbeelden vertrouwen ook op andere standaard Linux utilities zoals ls
, find
, xargs
, enz.
Voorbeeld 1. Wijzig alle bestandsnamen in kleine letters.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Voorbeeld 2. Wijzig alle bestandsnamen in hoofdletters.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Voorbeeld 3. Wijzig alle bestandsextensies van .jpeg
naar .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Voorbeeld 4. Verwijder de bestandsextensie .bak
uit alle bestanden.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
Voorbeeld 5. Voeg een .bak
bestandsextensie toe aan alle bestanden.
$ for f in `ls`; do mv $f $f.bak; done
Voorbeeld 6. Gebruik xargs
om “_backup” aan elk bestand toe te voegen.
$ ls * | xargs -I{} mv {} {}_backup
Voorbeeld 7. Gebruik de opdrachten find
, sed
en mv
om alle bestanden in kleine letters te veranderen.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
Voorbeeld 8. Gebruik de opdrachten find -exec
en mv
om “_backup” toe te voegen aan elk bestand dat eindigt op de extensie .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
Voorbeeld 9. Vergelijkbaar met het vorige voorbeeld, maar vervang find ‘ s -exec
Optie door xargs
om “_backup” toe te voegen aan elk bestand dat eindigt op .log
extensie.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
voorbeeld 10. Vervang een patroon in elk bestand met mv
en sed
. Dit zal “IMG” vervangen door “Vacation” in elk .jpg
bestand.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
voorbeeld 11. Voeg de huidige tijdstempel toe aan alle bestanden die eindigen op .log
. Dit zou een bestand als access.log
veranderen in access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
hernoem meerdere bestanden met hernoem
het hulpprogramma hernoem maakt onze bulk hernoemingstaken een beetje eenvoudiger, maar het hulpprogramma wordt niet altijd standaard geïnstalleerd. Gebruik het juiste commando hieronder om het te installeren met de package manager van je systeem.
Ubuntu, Debian en Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS en RHEL:
$ sudo dnf install prename
Arch Linux en Manjaro:
$ sudo pacman -S perl-rename
-n
optie in uw rename
commando ‘ s als u de wijzigingen wilt bekijken voordat u ze aanbrengt.Voorbeeld 1. Wijzig alle bestandsnamen in kleine letters.
$ rename 'y/A-Z/a-z/' *
Voorbeeld 2. Wijzig alle bestandsnamen in hoofdletters.
$ rename 'y/a-z/A-Z/' *
Voorbeeld 3. Strip de .bak
extensie uit alle bestanden.
$ rename 's/\.bak$//' *.bak
Voorbeeld 4. Wijzig de extensie van alle .jpeg
bestanden naar .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
Voorbeeld 5. Wijzig de extensie in hoofdletters .JPG
in kleine letters .jpg
voor alle bestanden.
$ rename 's/\.JPG/\.jpg/' *.JPG
Voorbeeld 6. Verwijder lege spaties uit alle bestandsnamen.
$ rename "s/ *//g" *
Voorbeeld 7. Vervang lege spaties door underscores voor alle bestandsnamen.
$ rename 's/\s+/_/g' *
Voorbeeld 8. Hoofdletter maken van de eerste letter van alle bestandsnamen.
$ rename 's/\b(\w)/\U/g' *
Voorbeeld 9. Vervang een patroon in elke bestandsnaam. Dit commando zal “IMG” vervangen door “Vacation” in elk .jpg
bestand.
$ rename 's/IMG/Vacation/' *.jpg
voorbeeld 10. Een deel van een bestandsnaam verwijderen. Dit commando zal “IMG_” verwijderen uit elk .jpg
bestand.
$ rename 's/IMG_//' *.jpg
voorbeeld 11. Voeg de .bak
extensie toe aan alle bestanden.
$ rename 's/(.*)/.bak/' *
hernoem meerdere bestanden met mmv
het hulpprogramma mmv blinkt uit in het hernoemen van bestanden op basis van patronen, zoals het verwijderen of toevoegen van tekenreeksen aan alle bestanden, of het herschikken van delen van bestandsnamen. Het is meestal niet standaard geïnstalleerd, maar u kunt het juiste commando hieronder gebruiken om mmv te installeren met uw systeem package manager.
Ubuntu, Debian en Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS en RHEL:
$ sudo dnf install mmv
Arch Linux en Manjaro (installeren vanaf AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
optie in uw mmv
commando ‘ s als u de wijzigingen wilt bekijken voordat u ze aanbrengt. Voorbeeld 1. Wijzig de extensie van alle .jpeg
bestanden naar .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Voorbeeld 2. Wijzig alle bestandsnamen in kleine letters.
$ mmv '*' '#l1'
Voorbeeld 3. Wijzig alle bestandsnamen in hoofdletters.
$ mmv '*' '#u1'
Voorbeeld 4. Herschik delen van een bestandsnaam. Dit commando zal muziekbestanden met patroon Song-Artist.mp3
veranderen in Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
Voorbeeld 5. Vervang het eerste voorkomen van ” IMG “door” vakantie ” in alle bestandsnamen.
$ mmv '*IMG*' '#1Vacation#2'
Voorbeeld 6. Voeg een voorvoegsel toe aan elke bestandsnaam. Dit commando zal “backup_” toevoegen aan elk .log
bestand.
$ mmv '*.log' 'backup_#1.log'
Voorbeeld 7. Voeg een achtervoegsel toe aan elke bestandsnaam. Dit commando zal “_backup” toevoegen aan elk .log
bestand.
$ mmv '*.log' '#1.log_backup'
Voorbeeld 8. Verwijder het voorvoegsel” IMG_ ” uit alle .jpg
bestanden.
$ mmv 'IMG_*.jpg' '#1'
Voorbeeld 9. Verwijder het” _oud ” achtervoegsel uit alle bestanden.
$ mmv '*_old' '#1'
Bulk hernoemen van bestanden via GUI
als de opdrachtregel niet echt uw ding is, is het mogelijk om meerdere bestanden tegelijk te hernoemen via GUI. Een van de beste tools om het werk te doen is de Bulk hernoemen applicatie die wordt geleverd met Thunar.
Thunar is de standaard bestandsbrowser voor Xfce, maar u kunt het installeren ongeacht de desktopomgeving die u gebruikt. Als je al Xfce of Thunar gebruikt, dan maakt Bulk Rename al deel uit van je systeem. Gebruik anders het juiste commando hieronder om het te installeren met de package manager van je systeem.
Ubuntu, Debian en Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS en RHEL:
$ sudo dnf install thunar
Arch Linux en Manjaro:
$ sudo pacman -S thunar
Stap 1 Nadat Thunar is geïnstalleerd, zoeken naar en open de Bulk Rename utility.
Stap 2. Klik op het plusteken om bestanden toe te voegen die u wilt hernoemen.
Stap 3. Kies uit de lijst met opties wat u wilt doen met de bestanden. U kunt ze allemaal wijzigen in hoofdletters of kleine letters, een datum en tijd toevoegen, Tekst op een bepaalde positie invoegen, automatische nummering toevoegen, tekens vervangen of bepaalde patronen in de bestandsnamen zoeken en vervangen, onder andere. In het voorbeeld hieronder hebben we een .txt
bestandsextensie toegevoegd aan al onze bestanden.
Stap 4. Als u tevreden bent met de voorbeeldwijzigingen in de kolom “nieuwe naam”, klikt u op “bestanden hernoemen” om de bulk hernoemen uit te voeren.
het hernoemen van meerdere bestanden op WSL
als u Windows Subsystem for Linux gebruikt, zullen sommige bovenstaande commando ‘ s niet werken, vooral die waarbij bestanden moeten worden gewijzigd in kleine of hoofdletters. Windows is niet hoofdlettergevoelig, dus beschouwt File.txt
, file.txt
en FILE.txt
als allemaal hetzelfde bestand.
u krijgt gewoon een fout dat het bestand al bestaat als u probeert FILE.txt
te hernoemen naar file.txt
. Om dit probleem te voorkomen, gebruik een van de volgende voorbeelden.
Voorbeeld 1. Wijzig de extensie in hoofdletters .JPG
naar kleine letters .jpg
voor alle bestanden (met standaard hulpprogramma ‘ s).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Voorbeeld 2. Wijzig de extensie in hoofdletters .JPG
naar kleine letters .jpg
voor alle bestanden (Gebruik het hulpprogramma hernoemen).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Voorbeeld 3. Wijzig de extensie in hoofdletters .JPG
naar kleine letters .jpg
voor alle bestanden (Gebruik mmv utility).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Voorbeeld 4. Wijzig alle bestandsnamen in kleine letters (met behulp van standaard hulpprogramma ‘ s).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
Voorbeeld 5. Wijzig alle bestandsnamen in kleine letters (met behulp van mmv utility).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
conclusie
het is mogelijk om standaard Bash utilities te gebruiken voor al je bulk hernoemen op Linux, maar de hernoemen en mmv tools maken het een stuk makkelijker. We kunnen Thunar ‘ s Bulk Rename applicatie ook gebruiken als we de GUI liever over de opdrachtregel gebruiken. De voorbeelden in deze gids bestrijken een breed scala aan hernoemingsscenario ‘ s en kunnen gemakkelijk worden aangepast aan andere behoeften.