1

複数のファイルを含むディレクトリがあります。各ファイルには異なるプレフィックスとサフィックスを付けることができますが、すべて 6 桁の数字が含まれています。数字の1つ(特に2番目)が変更されるように、ファイルの名前をバッチで変更したい。

たとえば、

*?2????* -> *?5????*

2 桁目はすべてのファイルで常に同じですが、それ以外はすべて異なる場合があります。さらに複雑なことに、一部のファイルには 6 桁の数字が 2 つ含まれています。両方の番号を更新する必要がある場合は、

例えば

*?2????*?2????* -> *?5????*?5????*

ポインタはありますか?

4

1 に答える 1

0

これを試して :

for file in *?2????*; do
    if [[ $file =~ [0-9]{6} ]]; then
        echo mv "$file" "$(sed 's/2/5/g' <<< "$file")"
    else
        echo mv "$file" "$(sed 's/[0-9]/5/2' <<< "$file")"
    fi
done

このsedコマンドは、2 番目に出現する数字を 5 に置き換えます。

これがニーズに合っている場合はecho、スニペットからコマンドを削除するだけです。

于 2013-03-12T14:03:53.270 に答える