2

У меня есть папка с файлами, и я хочу изменить регистр одного из своих персонажей на 5-й позиции.

Из этого:

ABC-xyz
DEF-xyz
GHI-xys

К этому:

ABC-Xyz
DEF-Xyz
GHI-Xys

Вы заметите, что X был преобразован в верхний регистр.

Есть идеи, как бы я сделал это в Bash?

1 ответ1

5

Пример чистого bash:

#!/usr/bin/env bash

for f in *; do
  g="${f::4}"  ##Split the first four characters
  h="${f:4:1}" ##just the fifth character (starts counting at 0)
  i="${f:5}"   ## character 6+ (again, counting from 0)
  mv -- "$f" "$g${h^^}$i"
    ##At the end, put the strings back together
    ##but make $h (character 5) uppercase
done
exit 0

В действительности, я бы, вероятно, использовал бы perl-rename (называемый rename в репозиториях Ubuntu; я знаю, что в некоторых других он идет по prename):

rename 's/(.{4})(.)/$1\u$2/' *

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .