Semplice come questo
(Bash)
for i in * ; do mv -- "$i" "${i:0:5}" ; done
Ecco.
E una spiegazione da Advanced Bash-Scripting Guide ( Capitolo 10. Manipolazione delle variabili ) , (con le NOTEs in più per evidenziare gli errori in quel manuale):
Estrazione sottostringa
${string:position}
Estrae la sottostringa da $string
a $position
.
Se il $string
parametro è "*" o "@", questo estrae i parametri posizionali, iniziando da $position
.
${string:position:length}
Estrae i $length
caratteri della sottostringa da $string
a $position
.
NOTEvirgolette mancanti intorno alle espansioni dei parametri! echo
non dovrebbe essere usato per dati arbitrari.
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.
Gli argomenti di posizione e lunghezza possono essere "parametrizzati", cioè rappresentati come una variabile, piuttosto che come una costante numerica.
Se il $string
parametro è "*" o "@", questo estrae un massimo di $length
parametri posizionali, a partire da $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
è un'estensione GNU.
expr substr $string $position $length
Estrae i $length
caratteri a $string
partire da $position
.
stringZ=abcABC123ABCabc
# 123456789......
# 1-based indexing.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
NOTE: Questo echo
è ridondante e lo rende ancora meno affidabile. Usa expr substr + "$string1" 1 2
.
NOTE: expr
tornerà con uno stato di uscita diverso da zero se l'uscita è 0 (o -0, 00 ...).
BTW. Il libro è presente nel repository ufficiale di Ubuntu come abs-guide
.
bash
tag se stai chiedendo unash
soluzione?