我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
当前回答
再次使用Pero的解决方案,只做了很少的修改,因为find将遍历目录树中的项目存储在目录条目中的顺序。在同一台机器上,这将(大部分)在不同的运行中保持一致,如果没有删除,则基本上是“文件/目录创建顺序”。
然而,在某些情况下,您需要获得某种逻辑顺序,例如按名称,这在本例中使用。
find -name '*.jpg' | sort -n | # find jpegs
gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | # build mv command
bash # run that command
其他回答
要给一个文件夹中的6000个文件重新编号,您可以使用ACDsee程序的“重命名”选项。
要定义前缀,请使用以下格式:####"*"
然后设置起始号码,按重命名,程序将重命名所有6000个文件的顺序数字。
在OSX上使用Pero的解决方案需要一些修改。我使用:
find . -name '*.jpg' \
| awk 'BEGIN{ a=0 }{ printf "mv \"%s\" %04d.jpg\n", $0, a++ }' \
| bash
注意:反斜杠是用来换行的
2015年7月20日编辑: 合并@ klastopher的反馈来引用mv命令的“%s\”参数,以支持带空格的文件名。
我也遇到过类似的问题,并为此编写了一个shell脚本。尽管已经有很多好的答案,我还是决定把它贴出来,因为我觉得它对别人有帮助。请随意改进它!
数
@Gnutt你想要的行为可以通过输入以下内容来实现:
./numerate.sh -d <path to directory> -o modtime -L 4 -b <startnumber> -r
如果-r选项被省略,扩孔将只模拟(应该有助于测试)。
动作L描述目标数字的长度(将用前导零填充) 也可以使用选项添加前缀/后缀-p <prefix> -s <suffix>。
如果有人想在文件编号之前按数字排序,只需删除-o modtime选项。
再次使用Pero的解决方案,只做了很少的修改,因为find将遍历目录树中的项目存储在目录条目中的顺序。在同一台机器上,这将(大部分)在不同的运行中保持一致,如果没有删除,则基本上是“文件/目录创建顺序”。
然而,在某些情况下,您需要获得某种逻辑顺序,例如按名称,这在本例中使用。
find -name '*.jpg' | sort -n | # find jpegs
gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | # build mv command
bash # run that command
find . | grep 'avi' | nl -nrz -w3 -v1 | while read n f; do mv "$f" "$n.avi"; done
找到。将显示文件夹和子文件夹中的所有文件。
Grep 'avi'将过滤所有avi扩展名的文件。
Nl -nrz -w3 -v1将显示从001 002开始的序列号,后面跟着文件名。
当读n f;做mv "$f" "$ n.v v ";Done会将文件名更改为序列号。