![CentOS 上的文件扩展名区分大小写](https://linux22.com/image/25471/CentOS%20%E4%B8%8A%E7%9A%84%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E5%8C%BA%E5%88%86%E5%A4%A7%E5%B0%8F%E5%86%99.png)
可能的重复:
如何清理文件扩展名?
我用的是CentOS。我的一个文件夹中有超过 1000 万张图像,这些图像进一步分组到子目录中。
问题是我的一些图像被命名为 abc。.jpg其他的被命名为xyz。JPG。因此,当我尝试访问 xyz.jpg 时,它显示“找不到文件”,因为扩展名区分大小写。
有什么方法可以将所有内容重命名JPG
为jpg
或 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。