พื้นหลัง: เว็บไซต์ของลูกค้าจัดเก็บรูปโปรไฟล์ผู้ใช้และไฟล์แนบอื่น ๆ ไว้ในโฟลเดอร์/user/images/*user_id*
เดียว พวกเขาเพิ่งถึงขีด จำกัด ไดเรกทอรี ( echo */ | wc
echoes 31998
, ระบบไฟล์ ext3) ดังนั้นฉันต้องแยกพวกเขาออกเป็นชิ้นเล็ก ๆ
โฟลเดอร์ผู้ใช้ใน/user/images
นั้นขึ้นอยู่กับ ID ผู้ใช้ที่เก็บไว้ในฐานข้อมูล มีไดเรกทอรีที่ไม่ใช้หมายเลขสองสามตัวที่จะไม่สนใจ
ฉันสร้างสคริปต์ทุบตีเล็ก ๆ ซึ่งทำงานได้ดีในสภาพแวดล้อมการทดสอบของฉัน แต่ฉันต้องการที่จะมีความคิดเห็นของคุณเกี่ยวกับเรื่องนี้:
#!/usr/bin/env bash
for D in *; do
if [ -d "${D}" ]; then # check if it's a directory
echo "Directory: ${D}"
if [ "${D}" -eq "${D}" ] 2>/dev/null # check if directory is a valid integer / number based
then
pre=${D:0:1} # $pre = first letter of the directory name
echo "Subdir: ${pre}"
if [[ ! -d "${pre}" ]] # check if directory $pre exists
then
mkdir "${pre}" # directory $pre does not exist, create it
echo "Created subdir ${pre}..."
fi
mv "${D}" "${pre}" # move $d into $pre
echo "Moved ${D} into ${pre}..."
else
echo "Directory: ${D} is not number based, i.e. not based on a user id. Skipping..."
fi
fi
done
ฉันยินดีรับข้อเสนอแนะหรือเคล็ดลับการเพิ่มประสิทธิภาพก่อนที่จะเรียกใช้บนเซิร์ฟเวอร์