Proste jak to.
(grzmotnąć)
for i in * ; do mv -- "$i" "${i:0:5}" ; done
Voila
I wyjaśnienie z Advanced Bash-Scripting Guide ( rozdział 10. Manipulowanie zmiennymi ) , (z dodatkowymi NOTEwstawkami w celu podkreślenia błędów w tym podręczniku):
Ekstrakcja podciągów
${string:position}
Ekstrakty z podciąg $string
w $position
.
Jeśli $string
parametr to „*” lub „@”, wówczas wyodrębnia parametry pozycyjne, zaczynając od $position
.
${string:position:length}
Ekstrakty $length
znaków podciąg od $string
w $position
.
NOTEbrakujące cudzysłowy wokół rozszerzeń parametrów! echo
nie powinien być wykorzystywany do dowolnych danych.
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.
Argumenty pozycji i długości można „sparametryzować”, czyli przedstawić jako zmienną, a nie jako stałą liczbową.
Jeśli $string
parametrem jest „*” lub „@”, to wyodrębnia maksimum $length
parametrów pozycyjnych, zaczynając od $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
jest rozszerzeniem GNU.
expr substr $string $position $length
Wyodrębnia $length
znaki od $string
początku $position
.
stringZ=abcABC123ABCabc
# 123456789......
# 1-based indexing.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
NOTE: Jest echo
to zbędne i czyni go jeszcze mniej niezawodnym. Zastosowanie expr substr + "$string1" 1 2
.
NOTE: expr
powróci z niezerowym statusem wyjścia, jeśli wyjście ma wartość 0 (lub -0, 00 ...).
BTW. Książka jest obecna w oficjalnym repozytorium Ubuntu jako abs-guide
.
bash
tag, jeśli pytasz osh
rozwiązanie?