我想将目录中的文件重命名为顺序数字。根据文件的创建日期。

例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。


当前回答

一句话的美:

ls -v | cat -n | while read n f; do mv -n "$f" "$n.ext"; done 

你可以用。png,。jpg等来改变。ext。

其他回答

对我来说,这些答案的组合非常完美:

ls -v | gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | bash

ls -v帮助以正确的1 10 9:1 9 10的顺序排序,避免文件名扩展的问题jpg jpg jpeg gawk 'BEGIN{a=1}{printf "mv %s %04d.jpg\n", $0, a++}'以4个字符和前导零重新编号。通过避免mv,我不会意外地试图覆盖已经存在的任何东西,因为意外地有相同的数字。 bash执行

注意@xhienne所说的,将未知内容输送到bash是一种安全风险。但这不是我的情况,因为我使用我的扫描照片。

将所有文件重命名为序列和小写扩展名:

rename --counter-format 000001 --lower-case --keep-extension --expr='$_ = "$N" if @EXT' *

在OSX上使用Pero的解决方案需要一些修改。我使用:

find . -name '*.jpg' \
| awk 'BEGIN{ a=0 }{ printf "mv \"%s\" %04d.jpg\n", $0, a++ }' \
| bash

注意:反斜杠是用来换行的

2015年7月20日编辑: 合并@ klastopher的反馈来引用mv命令的“%s\”参数,以支持带空格的文件名。

现在有一个选项后,你选择多个文件重命名(我已经看到在thunar文件管理器)。

选择多个文件 检查选项 选择重命名

在该特定目录下的所有文件都会出现提示符 只要在分类部分检查一下就可以了

a=1

for i in *.jpg; do
 mv -- "$i" "$a.jpg"
 a=`expr $a + 1`
done