我想在给定的订单前面加上数字订单表 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