CentOS 上的文件扩展名区分大小写

CentOS 上的文件扩展名区分大小写

可能的重复:
如何清理文件扩展名?

我用的是CentOS。我的一个文件夹中有超过 1000 万张图像,这些图像进一步分组到子目录中。

问题是我的一些图像被命名为 abc。.jpg其他的被命名为xyz。JPG。因此,当我尝试访问 xyz.jpg 时,它显示“找不到文件”,因为扩展名区分大小写。

有什么方法可以将所有内容重命名JPGjpg或 httpd 配置来解决此问题。

答案1

试试这个(这将在您运行此操作的目录的所有子目录中递归地将所有 .JPG 文件重命名为 .jpg):

find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;

find 搜索当前目录及其子目录中名为 *.JPG 的所有文件,将列表传递给 mv 命令重命名它们

答案2

与往常一样,对于此类问题和答案,请注意以下几点:

find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;

虽然在大多数情况下它对大多数人来说都可以正常工作,但公开宣传它是危险的,因为它存在一些问题,在某些情况下可能会变成安全问题。

这会重命名文件和目录。如果重命名目录,则将无法重命名其中的文件(使用 -depth 选项)

它可能会丢失文件(foo.JPG 重命名为 foo.jpg,而已经存在 foo.jpg),或者可能将文件放在您不想要的位置(例如,考虑一个目录,其中有一个名为 foo.JPG 的文件,并且一个名为 foo.jpg 的文件实际上是 /etc/apache2/conf.d 的符号链接,它可能会破坏符号链接。存在一种竞争条件,可以让攻击者欺骗您重命名任何文件。

通过使用专用于该任务(批量重命名文件)的工具可以避免其中许多问题,而不是尝试重新发明轮子。我想到了 mmv 和 zsh 的 zmv。

相关内容