ফন্টগুলি অন্তর্ভুক্ত থাকা ডিরেক্টরিগুলির মধ্যে নিম্নলিখিত কমান্ডগুলির কাজ করা উচিত, আপনি যদি ফন্ট স্টোরেজ ডিরেক্টরিটির বাইরে থেকে ব্যবহার করতে চান তবে পরিবর্তন for f in ./*
করুন for f in /directory/containing/fonts/*
। এটি একটি খুব শেল ভিত্তিক পদ্ধতি, তাই বেশ ধীর এবং এটি পুনরাবৃত্তিযোগ্যও। এটি কেবলমাত্র ডিরেক্টরি তৈরি করবে, যদি এমন ফাইল থাকে যা মেলা চরিত্রের সাথে শুরু হয়।
target=/directory/to/store/alphabet/dirs
mkdir "$target"
for f in ./* ; do
if [[ -f "$f" ]]; then
i=${f##*/}
i=${i:0:1}
dir=${i^}
if [[ $dir != [A-Z] ]]; then
mkdir -p "${target}/#" && mv "$f" "${target}/#"
else
mkdir -p "${target}/$dir" && mv "$f" "${target}/$dir"
fi
fi
done
ওয়ান লাইনার হিসাবে, ফন্ট স্টোরেজ ডিরেক্টরি থেকে আবার:
target=/directory/to/store/alphabet/dirs; mkdir "$target" && for f in ./* ; do if [[ -f "$f" ]]; then i=${f##*/}; i=${i:0:1} ; dir=${i^} ; if [[ $dir != [A-Z] ]]; then mkdir -p "${target}/#" && mv "$f" "${target}/#"; else mkdir -p "${target}/$dir" && mv "$f" "${target}/$dir" ; fi ; fi ; done
অনুরূপ স্ট্রিং ম্যানিপুলেশন সহ ফাইন্ড ব্যবহার করে একটি পদ্ধতি, বাশ প্যারামিটার সম্প্রসারণ ব্যবহার করে যা পুনরাবৃত্ত হবে এবং খাঁটি শেল সংস্করণের চেয়ে কিছুটা দ্রুত হওয়া উচিত:
find . -type f -exec bash -c 'target=/directory/to/store/alphabet/dirs ; mkdir -p "$target"; f="{}" ; i="${f##*/}"; i="${i:0:1}"; i=${i^}; if [[ $i = [[:alpha:]] ]]; then mkdir -p "${target}/$i" && mv "$f" "${target}/$i"; else mkdir -p "${target}/#" && mv "$f" "${target}/#"; fi' \;
বা আরও পঠনযোগ্য:
find . -type f -exec bash -c 'target=/directory/to/store/alphabet/dirs
mkdir -p "$target"
f="{}"
i="${f##*/}"
i="${i:0:1}"
i=${i^}
if [[ $i = [[:alpha:]] ]]; then
mkdir -p "${target}/$i" && mv "$f" "${target}/$i"
else
mkdir -p "${target}/#" && mv "$f" "${target}/#"
fi' \;