Mass renamen bestanden in unix

Het hernoemen van meer dan 1 bestand kan handmatig de nodige tijd kosten, daarom ben ik op zoek gegaan naar een tool waarmee ik via de command line van unix meerdere bestanden (al dan niet aan de hand van patronen) kan hernoemen.

Zoals al vaker is gebleken, zijn onder unix veelal prachtige en vaak eenvoudig werkende tools beschikbaar. Dit keer bleek mmv precies te doen wat ik wil. Deze tool wordt omschreven als:

mmv is a mass move/copy/renaming tool that uses standard wildcards to perform its functions

Tijd om eens naar deze tool te gaan kijken.

Een introductie werkt vaak het best met een eenvoudig voorbeeld. Stel we willen de volgende files hernoemen:

20120228_log.log
20120227_log.log
...
20110101_log.log

Het _log en de extensie is enigszins dubbelop, stel we willen de _log weghalen dan kunnen we dat met het volgende commando doen:

mmv "*_log.log" "#1.log"

Dit resulteert in de volgende files:

20120228.log
20120227.log
...
20110101.log

Het is ook mogelijk meerdere element te vervangen, verplaatsen of te verwijderen. Per wilcard is er een # element beschikbaar. Een voorbeeld van meerdere wildcards is te zien als we de volgende bestanden willen hernoemen:

2012_access_20120228_log.log
2012_access_20120228_log.log
..
2011_access_20110101_log.log

Deze log files zijn voorzien van het jaartal, echter willen we liever beginnen met het type en daarna de datum (dus geen los jaartal meer). Daarnaast speelt hier ook het probleem met het dubbele “log” gedeelte. We willen hier dus eigenlijk 0101.log krijgen.

mmv "*_*_*_log.log" "#2_#3.log"

Dit resulteert in de volgende files:

access_20120228.log
access_20120227.log
..
access_20110101.log

Voor meer informatie over mmv, zie de manpage mmv

Leave a Reply

Your email address will not be published. Required fields are marked *