重新排列一组文件的文件名组成部分

重新排列一组文件的文件名组成部分

我有一组名为:ddmmyyyyxxxx.jpg(xxxx 只是一个序列号)的照片文件,我正在尝试搜索但遗憾的是没有结果,是将文件名重命名为yyyy-mm-dd-xxxx.jpg

我在网上找到的所有方法要么是替换某个字符,要么是更改字母大小写。

答案1

你应该能够使用捕获组使用基于 perl 的rename命令,例如最简单的

rename -vn -- 's/^(\d{2})(\d{2})(\d{4})/$3-$2-$1/' *.jpg

(注意:这-n是一个试运行标志:除非您将其删除,否则它实际上不会改变任何东西。)

答案2

您可以使用以下 bash 脚本执行此操作。

#!/bin/bash

for file in $(ls)
do
    date=${file:0:2}
    month=${file:2:2}
    year=${file:4:4}
    sequence=${file:8:4}
    extension=${file: -3}

    mv $file $year\-$month\-$date\-$sequence.$extension
done
echo all files have been renamed

为了使用此脚本,请打开终端并输入 ,touch script然后chmod +x script使其可执行。然后运行并将上述代码复制粘贴到终端中。按+nano script保存文件,然后按。然后将脚本移动到包含这些图像的目录并通过运行 执行脚本。CTRLXYenter./script

这会将脚本目录中的所有文件重命名为您请求的模式。但是,它也会重命名脚本本身,因此如果您想再次运行脚本,请注意它将具有不同的名称(最终名称将是pt-ri-sc-.ipt我建议您mv pt-ri-sc-.ipt script在再次使用脚本之前运行。否则,您可以替换ls并将ls $1脚本存储在其他地方,以避免意外重命名。此外,此脚本仅对名称顺序与问题中给出的顺序一致的文件正常运行(ddmmyyyyxxxx.jpg)。对于任何其他文件,文件最终都会有一个奇怪的名称。

答案3

对于这种过程,我使用 Krename,它有一个 GUI 并且有点直观...在 ubuntu 下,您可以在软件中心找到它。

相关内容