文字列に数字を入力し、ファイル名を変更します。

文字列に数字を入力し、ファイル名を変更します。

このようなファイル名があります。

a2.txt.gz
d12.txt.gz
k5.txt.gz
m4.txt.gz
...

文字 1 個、数字 1 個または 2 個、その後に .txt.gz が続きます。以下のように数字の前にゼロを追加したいと思います。

a02.txt.gz
d12.txt.gz
k05.txt.gz
m04.txt.gz
...

似たようなことを試しましたが、うまくいかないようです。

find . | grep -E "[a-z][0-9]{1}\.+" | sed -er s/\([a-z]\)\([0-9]{1}\)\(.txt.gz\)/\10\2\3/

私のロジックは、最初に1桁のファイル名をgrepしてから、文字、数字、および.txt.gzの3つの部分に分割し、数字の前に0を追加することです。しかし、私はそれを動作させることはできません。名前を変更する部分はよくわかりません。

ベストアンサー1

私はそうします: for f in [a-z][0-9].txt.gz; do mv $f "${f:0:1}0${f:1}" done

私はこれを他のものから適用しました(awkもっと必要なので使用しましたが、コメントのおかげでより良くしました)。

おすすめ記事