Zsh / AWK / ...を介してファイル名の前に数字の順序を追加するには?

Zsh / AWK / ...を介してファイル名の前に数字の順序を追加するには?

与えられた注文の前に番号注文フォーム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

オペレーティングシステム:Debian 8.5

答え1

zsh で以下を使用します。zmvバッチの名前変更を行います。まず実行autoload -U zmv(に入れて.zshrc)してから

i=1
zmv 'IMG_*.jpg' '$((i++)).$f'

答え2

ls *.jpg | nl -s.

nl行番号が追加されます。番号とデータ(この場合はファイル名)の間の区切り記号として-s.aを指定します。.出力から先行スペースを削除するには、次のように追加します。

ls *.jpg | nl -s. | sed 's/^ *//'

sedこれにより、行の先頭からゼロ以上のスペースが削除されます。

本当にこれをやりたい場合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

関連情報