我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
当前回答
一个非常简单的bash一行代码,它保留了原来的扩展名,增加了前导零,并且也适用于OSX:
num=0; for i in *; do mv "$i" "$(printf '%04d' $num).${i#*.}"; ((num++)); done
简化版http://ubuntuforums.org/showthread.php?t=1355021
其他回答
一句话的美:
ls -v | cat -n | while read n f; do mv -n "$f" "$n.ext"; done
你可以用。png,。jpg等来改变。ext。
在OSX上,从Homebrew安装重命名脚本:
brew install rename
然后你可以非常简单地做到:
rename -e 's/.*/$N.jpg/' *.jpg
或者加上一个漂亮的前缀:
rename -e 's/.*/photo-$N.jpg/' *.jpg
ls -1tr | rename -vn 's/.*/our $i;if(!$i){$i=1;} sprintf("%04d.jpg", $i++)/e'
重命名-vn -删除n为关闭测试模式
{$i=1;} -控制起始编号
"%04d.jpg" -控制计数零04并设置输出扩展名。jpg
将所有文件重命名为序列和小写扩展名:
rename --counter-format 000001 --lower-case --keep-extension --expr='$_ = "$N" if @EXT' *
按时间排序,限制为jpg,前导零和一个基底名(以防你可能想要一个):
ls -t *.jpg | cat -n | \
while read n f; do mv "$f" "$(printf thumb_%04d.jpg $n)"; done
(都在一行上,不带\)