我在压缩后重命名了文件,以使协商正确进行。所使用的命令之一是
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
答案 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
不能创建具有正在处理的扩展名的文件。