Bulk rename files

05.11.2013 | Bash

rename versteht regex, so daß man Extensions auch einfach so ändern kann:

benennt alle Dateien mit der Extension tlt in php-Dateien um.


rename 's/\.tlt$/\.php/' *.tlt

Komplizierte Version:


#! /bin/bash
for file in *.tlt
do
        mv $file `echo $file | sed 's/\(.*\.\)tlt/\1php/'`
 done

echo "done."

benennt auch alle Dateien mit der Extension tlt in php-Dateien um.

Seit neuer perl-Version funktioniert rename nur noch per sudo !

Umbenennen mit Zähler (komplizierte Version):


#! /bin/bash

start=1
count=$start
offset=3

echo
echo "Renaming files to : "
echo "--------------------"

for f in *.mp3; do
    echo -e "$f"  "\t --> " "$(printf "%02d" $count)-"${f:$offset}""
    count=`expr $count + 1`

done


read -p "Are you sure you want to continue? <y/N> " prompt

if [[ $prompt =~ [yY](es)* ]]
then
count=$start
 for f in *.mp3; do
     mv "$f"  $(printf "%02d" $count)-"${f:$offset}"
     count=`expr $count + 1`
 done
else
  exit 0
fi
echo "done."
echo
ls -ls



Vorhandener Zähler, aber blöde Formatierung:

entfernt Klammern um den Zähler,also macht aus


(01) Songititle auch mit Leerzeichen dazwischen.mp3

das:


01 - Songititle auch mit Leerzeichen dazwischen.mp3

rename 's/\((.*)\)/$1\ \-/' *.mp3