Yo recuerdo que cuando traté de usar la expansión de parámetros (parameter expansion) en el Korn shell de HP-UX nunca fue tan simple como en esta ocasión. Siempre había algo, algún detalle que no cuadraba con lo que indicaba la documentación en línea debía ser el resultado o comportamiento esperado. Como quiera que fuere en esta ocasión me ha funcionado muy bien el asunto en la implementación del Korn shell de Mac OS X (10.6).
Como ya a muchos les ha pasado, me topé con la necesidad de llevar a cabo el renombrado de varios archivos, que iniciaban con cierto prefijo. Mi deseo era cambiar dicho prefijo conservando el resto del nombre del archivo (incluyendo la extensión). Al igual que como a todos a quienes ya nos hemos topado con esto sabía que el asunto no es algo que pueda resolverse con un simple comando y requeriría al menos un pequeño script. Decidí «googlear« el asunto para ver qué ideas podía encontrar.
Como lo esperaba no fue difícil encontrar miles de preguntas y posibles soluciones. En faqs.org encontré la compilación de ideas más clara, rica y breve sobre el recurrente problema del renombrado de varios archivos. Sin embargo la mayoría de las soluciones abordan el problema bajo el caso de un sufijo y, tratándose de un sufijo, parece estar peor el problema. Así creía.
En alguno de los sitios que encontré leí algo sobre la substitución de parámetros, que me llevó a recordar esta funcionalidad en el Korn shell, consultar la documentación en línea y probarla, resultando en lo siguiente:
for f in 200*
do
mv $f "671"${f##200}
done
Como puede verse la expansión de parámetros en Korn shell (${parameter##pattern}) es la esencia de esta secuencia de comandos y lo que logra el resultado buscado.
