Перемещение файла ttf вызывает дополнительное расширение - PullRequest
0 голосов
/ 02 июля 2019

Я переименовываю свои файлы после сжатия, чтобы согласование происходило правильно. Одна из используемых команд -

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 голосов
/ 04 июля 2019

Чтобы избежать условий гонки и других препятствий, связанных с реализацией, сделайте это в два этапа.Сначала переименуйте каждый файл с помощью «маркера»:

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 не сможет создать файлс тем же расширением, которое обрабатывает.

...