多数のフォントファイル(2728ファイル)がフォルダにフラットに配置されています。
同じフォントファミリに属するすべてのファイルを、フォルダ名がフォントファミリのフルネームであるフォルダに移動したいと思います。
たとえば、次のファイルのリストから:
Axle.otf
AxleBold.otf
AxleBoldItalic.otf
AxleCondBold.otf
AxleCondensed.otf
AxleCondItalic.otf
AxleExpanded.otf
AxleExpBold.otf
AxleExpItalic.otf
AxleItalic.otf
AxleNarBold.otf
AxleNarItalic.otf
AxleNarrow.otf
AxleWide.otf
AxleWideBold.otf
AxleWideItalic.otf
Distract.otf
DistractBold.otf
DistractBoldItalic.otf
DistractCondBold.otf
DistractCondensed.otf
DistractCondItalic.otf
DistractExpanded.otf
DistractExpBold.otf
DistractExpItalic.otf
DistractItalic.otf
DistractNarBold.otf
DistractNarItalic.otf
DistractNarrow.otf
DistractWide.otf
DistractWideBold.otf
DistractWideItalic.otf
Voltagio.otf
VoltagioBold.otf
VoltagioBoldItalic.otf
VoltagioCondBold.otf
VoltagioCondensed.otf
VoltagioCondItalic.otf
VoltagioExpanded.otf
VoltagioExpBold.otf
VoltagioExpItalic.otf
VoltagioItalic.otf
VoltagioNarBold.otf
VoltagioNarItalic.otf
VoltagioNarrow.otf
VoltagioOutline.otf
VoltagioWide.otf
VoltagioWideBold.otf
VoltagioWideItalic.otf
「Axle」で始まるすべてのファイルはAxleというフォルダにあり、「Distract」で始まるファイルはDistractというフォルダにあり、Voltagioフォルダなどを移動するためのすべての「Voltagio」ファイルがあります。
デフォルトでは、フォントファイルの最も短い名前はそのフォントファミリのデフォルト名であり、そのベース名を持つフォルダにシリーズを収集するために使用する必要があります。デフォルト名の長さは約4〜12文字です。
もう1つの問題は、「シリーズ」にはファイルが1つしか含まれていないため、別のフォルダに移動するのではなく、ターゲットフォルダのルートレベルに残る必要があることです。
どんな助けでも大変感謝します。
答え1
あなたの例では、すべてのファイル名は次のとおりです<font-family>[<style-surfix>].otf
。
<font-family>
すべてのファイル名にも表示されます。フォントコレクションディレクトリあなたは作りたい<style-surfix>
可能一つまたはコンビネーション7つの要素セット:Bold, Italic, Cond, Exp, Nar, Wide, Out
私の答えをより簡単に表現するために、以下を呼び出します。
<font-family>.otf
:ネイキッドフォント<font-family><style-surfix>.otf
: 派生フォント
このスクリプトは操作を正しく実行します。
# move all `derived fonts` to `.temp/` directory:
mkdir -p .temp/
mv "*{Bold,Italic,Cond,Exp,Nar,Wide,Out}*.otf" .temp/ 2> /dev/null
for file in ./*.otf; do
# get `family name` based on `bare font`'s name
name=${file%.*}
# create `family directory`
mkdir -p "${file%.*}"
# move `bare font` to correct directory
mv "$file" "$name/"
# move `derived font` to corresponding `family directory`
mv .temp/"$name"*.otf "$name/"
done;
# remove temporary directory
rmdir .temp/ 2> /dev/null