Просто, як це.
(удар)
for i in * ; do mv -- "$i" "${i:0:5}" ; done
Вуаля.
І пояснення з Посібника з розширеного сценарію Bash ( Розділ 10. Маніпуляція змінними ) (з додатковим NOTEвкладеним рядком, щоб виділити помилки в цьому посібнику):
Вилучення підрядків
${string:position}
Витягує підрядку з $string
at $position
.
Якщо $string
параметр дорівнює "*" або "@", це витягує позиційні параметри, починаючи з $position
.
${string:position:length}
Витягує $length
символи підрядки з $string
о $position
.
NOTEвідсутні лапки навколо розширень параметрів! echo
не слід використовувати для довільних даних.
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.
Аргументи позиції та довжини можуть бути "параметризовані", тобто представлені як змінна, а не як числова константа.
Якщо $string
параметр дорівнює "*" або "@", це витягує максимум $length
позиційних параметрів, починаючи з $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
- розширення GNU.
expr substr $string $position $length
Витягує $length
символи $string
починаючи з $position
.
stringZ=abcABC123ABCabc
# 123456789......
# 1-based indexing.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
NOTE: Це echo
зайве і робить його ще менш надійним. Використовуйте expr substr + "$string1" 1 2
.
NOTE: expr
повернеться з ненульовим статусом виходу, якщо вихід 0 (або -0, 00 ...).
До речі. Книга присутня в офіційному сховищі Ubuntu як abs-guide
.
bash
тег, якщо ви проситеsh
рішення?