Справочная информация: веб-сайт клиента хранит фотографии профиля пользователя и другие вложения в единую плоскую папку /user/images/*user_id*
. Недавно они достигли предела каталогов (echo */ | wc
31998
, файловая система ext3), поэтому мне нужно разделить их на более мелкие куски.
Папки пользователя в /user/images
основаны на идентификаторе пользователя, хранящемся в БД. Есть несколько каталогов без нумерации, которые следует игнорировать.
Я создал небольшой скрипт bash, который отлично работает в моей тестовой среде, но я хотел бы узнать ваше мнение по этому поводу:
#!/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
Я бы приветствовал любые предложения или советы по оптимизации, прежде чем запускать это на сервере.