首页 > 解决方案 > 移动 ttf 文件会导致额外的扩展名

问题描述

我在压缩后重命名我的文件,以便正确进行协商。使用的命令之一是

find dist -name "*.ttf" -type f -print -exec sh -c 'f="{}"; mv -- "$f" "${f%.ttf}.ttf.ttf"' \;

相同的命令对于 html、css、svg 等扩展名非常有效,并且会生成具有预期的双扩展名的文件。例如 - <>.html.html

但是,上面的命令导致 .ttf.ttf.ttf

我将它作为 gitlab CI 的一部分运行,它会生成一个新的构建。因此,没有冲突的可能性,因为它完全从一个空文件夹开始。这样做是为了为静态站点提供压缩文件。服务器是 Apache,我在 httpd.conf 或 .htaccess 中找不到任何可能额外重命名文件的内容。

预期输出 - *.ttf 文件应重命名为 *.ttf.ttf

标签: shmv

解决方案


为避免竞争条件和其他特定于实现的障碍,请分两步执行此操作。首先,用“标记”重命名每个文件:

find dist -name "*.ttf" -type f -print -exec sh -c 'mv -- "$1" "${1%.ttf}.ttf.foo"' _ {} \;

然后用适当的扩展名替换“标记”:

find dist -name "*.foo" -type f -print -exec sh -c 'mv -- "$1" "${1%.foo}.ttf"' _ {} \;

这保证了find不能创建与它正在处理的扩展名相同的文件。


推荐阅读