質問: bashを使用してファイル名のn番目の文字の大文字と小文字を変更しますか? ファイルのフォルダがあり、5番目の文字の大文字と小文字を変更したいと思います。これから:abc-xyz def-xyz ghi-xys これに:abc-xyz def-xyz ghi-xys xが大文字に変換されていることがわかります。bashでこれをどのように行うかについてのアイデアはありますか?
回答: 純粋な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(ubuntuリポジトリではrenameと呼ばれます。他のいくつかではprenameで呼ばれることを知っています)を使用します。rename 's/(.{4})(.)/$1\u$2/' *