Tan simple como esto.
(golpetazo)
for i in * ; do mv -- "$i" "${i:0:5}" ; done
Voila
Y una explicación de Advanced Bash-Scripting Guide ( Capítulo 10. Manipulación de variables ) , (con NOTEs adicional en línea para resaltar los errores en ese manual):
Extracción de subcadena
${string:position}
Extrae la subcadena de $string
at $position
.
Si el $string
parámetro es "*" o "@", esto extrae los parámetros posicionales, comenzando en $position
.
${string:position:length}
Extrae $length
caracteres de la subcadena de $string
at $position
.
NOTEfaltan comillas alrededor de expansiones de parámetros! echo
no debe usarse para datos arbitrarios.
stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0} # abcABC123ABCabc
echo ${stringZ:1} # bcABC123ABCabc
echo ${stringZ:7} # 23ABCabc
echo ${stringZ:7:3} # 23A
# Three characters of substring.
# Is it possible to index from the right end of the string?
echo ${stringZ:-4} # abcABC123ABCabc
# Defaults to full string, as in ${parameter:-default}.
# However . . .
echo ${stringZ:(-4)} # Cabc
echo ${stringZ: -4} # Cabc
# Now, it works.
# Parentheses or added space "escape" the position parameter.
Los argumentos de posición y longitud pueden "parametrizarse", es decir, representarse como una variable, en lugar de como una constante numérica.
Si el $string
parámetro es "*" o "@", esto extrae un máximo de $length
parámetros posicionales, comenzando en $position
.
echo ${*:2} # Echoes second and following positional parameters.
echo ${@:2} # Same as above.
echo ${*:2:3} # Echoes three positional parameters, starting at second.
NOTE: expr substr
es una extensión de GNU.
expr substr $string $position $length
Extrae $length
personajes desde el $string
comienzo $position
.
stringZ=abcABC123ABCabc
# 123456789......
# 1-based indexing.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
NOTE: Eso echo
es redundante y lo hace aún menos confiable. Uso expr substr + "$string1" 1 2
.
NOTE: expr
volverá con un estado de salida distinto de cero si la salida es 0 (o -0, 00 ...).
Por cierto. El libro está presente en el repositorio oficial de Ubuntu como abs-guide
.
bash
etiqueta si estás pidiendo unash
solución?