Если нет расширения в имени файла:
for i in secondfolder/IM_* ; do mv "$i" "${i%_[0-9]*}_$[10#${i##*_}+2048]" ; done
-121--133496- Здесь основной способ сделать что-то подобное с помощью сценария оболочки и awk.
Этот пример сценария является достаточно явным для вашего конкретного случая, его использование второго поля в имени файла является допустимым целым числом. И надеется, что в именах файлов нет случайных подчеркиваний. Более общий сценарий подтверждает, что поле 2 является просто числами, и делает разделитель полей параметром. Также предполагается, что расширение файла отсутствует (например, .img или .png)
#!/bin/sh WORKDIR=/(Directory where the files to be renamed are) NUM2ADD=2048 cd $WORKDIR echo "Old File New File" ls IM_* | while read i do newfile=`echo $i | awk -F_ -v incby=$NUM2ADD '{t=$2 + incby;printf "IM_%s",t;}'` echo $i $newfile # after a dry run to test, replace 'echo' with 'mv' onces your sure of the result. done
Поскольку наличие расширения файла достаточно вероятно, можно изменить строку awk на:
newfile=`echo $i | awk -F[_.] -v incby=$NUM2ADD '{t=$2 + incby; printf "IM_%s.%s",t,$3;}'`
Это сохраняет расширение файла и использует _ подчеркивания и точку в качестве разделителей полей.
-121--133498- При экспорте LC_ALL=C
я фактически избавился от предупреждения.
Это скорее обходной путь (так как LC_ALL также категорически не рекомендуется), но я предполагаю, что причина такого поведения заключается в предположениях nix о языковых стандартах в системе, которые не применяются к openSUSE.
Я нашел причину, по которой это не сработало.
В конфигурации PuTTy мне пришлось изменить настройки сеанса следующим образом:
Соединение -> Данные -> Сведения о терминале -> Строка типа терминала
Значение было: xterm {{ 1}} Я изменил его на linux
Теперь я могу использовать клавиши Home + End в Bash и Screen.
echo $ TERM
покажет linux
за пределами экрана и screen.linux
внутри экрана.
ОБНОВЛЕНИЕ 23 октября 2018 г.
Я нашел гораздо более простое решение!
Просто запустите экран с помощью этой команды:
TERM = linux screen
или поместите эту строку в свой ~ / .bashrc :
alias screen = 'TERM = linux screen'
Проблема, вероятно, может быть устранена установкой переменной $TERM
в screen. Попробуйте добавить term screen-256color
в ~/.screenrc
.
Если это не сработает, попробуйте добавить termcapinfo xterm ks@:ke@' в
~/.screenrc` также. Это может сломать некоторые другие клавиши, поэтому вам следует тщательно проверить это.