Aqui está um pequeno script que fará o que você quiser. Você pode chamar o script com uma lista de arquivos como: ./scriptname *.rb
ou com diretórios (ele os reciclará): ./scriptname .
Não se esqueça de definir o bit executável: chmod a+x scriptname
.
#!/bin/sh
suff=rb # suffix of files to rename
script="$0" # this script name for recursion
for f in "$@" ; do
if test -d "$f" ; then
echo "=== recursing directory $f"
find "$f" -type f -name "*.$suff" -exec "$script" {} +
elif test -f "$f" ; then
d="$(dirname "$f")"
b="$(basename "$f")"
r="$(echo "$b" | sed -r "s/^([a-zA-Z])[a-zA-Z]*([0-9]+\.${suff})\$//;s/^[a-zA-Z]+_([a-zA-Z]+)_([a-zA-Z]+[0-9]+)(\.${suff})\$/_/")"
echo "-- renaming $f -> $d/$r"
mv "$f" "$d/$r"
fi
done