ファイル名の最後の数字部分を最初の部分にコピーします。

ファイル名の最後の数字部分を最初の部分にコピーします。
ISS45_20200302030042.zip
R0387F200229.zip

この状況に適したシェルスクリプトが欲しいです。上には2つのファイル名があります。両方のファイル名の前に数字部分を追加したいと思います。私が望むものは、以下の例を参照してください。

20200302030042_ISS45_20200302030042.zip
200229_R0387F200229.zip
for f in *.zip; do
   mv "$f" $(sed -E 's/^(.+)_([^.]+)\./\2_\1./' <<< "$f")
done

私はこれを使用しています。ファイルでのみ機能しますiss45が、Rファイルでは機能しません。

ベストアンサー1

sed必要なコマンドは次のとおりです。

sed -r 's/^(.*)([^[:digit:]])([[:digit:]]+)\.zip$/\3_\1\2\3.zip/'
$ echo ISS45_20200302030042.zip |
    sed -r 's/^(.*)([^[:digit:]])([[:digit:]]+)\.zip$/\3_\1\2\3.zip/'
20200302030042_ISS45_20200302030042.zip

$ echo R0387F200229.zip |
    sed --posix -r 's/^(.*)([^[:digit:]])([[:digit:]]+)\.zip$/\3_\1\2\3.zip/'
200229_R0387F200229.zip

おすすめ記事