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

时间:2019-07-02 10:20:42

标签: sh mv

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

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

1 个答案:

答案 0 :(得分:0)

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

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不能创建具有正在处理的扩展名的文件。