移动 ttf 文件会导致额外的扩展名

Moving ttf file causes extra extension

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

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

为避免竞争条件和其他 implementation-specific 障碍,请分两步进行。首先,用 "marker":

重命名每个文件
find dist -name "*.ttf" -type f -print -exec sh -c 'mv -- "" "${1%.ttf}.ttf.foo"' _ {} \;

然后将 "marker" 替换为正确的扩展名:

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

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