注文に番号注文フォーム1-777を追加したいと思います。それをループして、Bashで変数をインクリメントできます。ただし、ZshやAwkでやりたいと思います。次に例を示します。ファイル名
IMG_20161215_081850.jpg
IMG_20161215_081851.jpg
IMG_20161215_090559.jpg
IMG_20161215_090601.jpg
IMG_20161215_091308.jpg
ウォンテッド
1.IMG_20161215_081850.jpg
2.IMG_20161215_081851.jpg
3.IMG_20161215_090559.jpg
4.IMG_20161215_090601.jpg
5.IMG_20161215_091308.jpg
OS:Debian 8.5
ls *.jpg | nl -s.
nl
は行番号を追加します。 -s.
は、数値とデータ(この場合はファイル名)の間の区切り文字として.
を指定します。出力から先頭のスペースを削除する場合は、次を追加できます。
ls *.jpg | nl -s. | sed 's/^ *//'
sed
は、行の先頭から0個以上のスペースを削除します。
本当にawk
でこれを実行したい場合:
ls *.jpg | awk '{ print NR"."$0 }'
NR
は、これまでに解析されたレコードの数を示す内部変数です。
ファイル名を永続的に変更するには、次の手順を実行します(Michael Vehrs)
ls *.jpg | nl -s. | sed 's/ *\([0-9]\+\)\.\(.*\)/\2 \1\.\2/' | xargs -n 2 mv
Zshでは、 zmv
を使用して一括名前変更を実行します。最初にautoload -U zmv
を実行し(これを.zshrc
に入れます)、次に
i=1
zmv 'IMG_*.jpg' '$((i++)).$f'