Hernoemen van grote aantallen bestanden onder Linux

Batch Rename is de correcte nederlandse term hiervoor. In Linux kun je dat heel mooi met sed. Deze krachtige editor kan nog net geen koffie voor je zetten, maar verder kun je er eigenlijk alles mee.

 

Stel je wilt alle bestanden met het woordje 'timos' erin en eindigend op .rrd hernoemen naar 'summit'. Met het volgende stukje code kun je dat snel doen:

ls *.rrd|sed 's/\(timos\)\(.*\)/mv "\1\2" "summit\2"/' | sh

In dit stukje wordt de output van ls naar sed gestuurd die vervolgens naar het woord 'timos' zoekt. Door deze term tussen ronde halen te zetten (en vergeet niet te escapen!) worden de gevonden woorden in de backrefs \1 en \2 geplaatst. Vervolgens laat je sed ook meteen het move commando maken en door dat weer naar een shell te sturen wordt het dan ook uitgevoerd. Als je de laatste '| sh' weglaat kun je vantevoren snel controleren wat de expressie gaat doen.

Folder:

timos1.rrd

timosje-2233.rrd

timoskou.1999.12.31.rrd

Na de batch rename:

summit1.rrd

summitje-2233.rrd

summitkou.1999.12.31.rrd