در این مطلب شما یاد خواهید گرفت که چطور در لینوکس نام تمامی فایلها و پوشه ها را به حروف کوچک تبدیل کنید.
چندین راه برای انجام این کار وجود دارد.اما ما به توضیح دو راه کارآمد و قابل اعتماد میپردازیم.
در اینجا ما برای رسیدن به هدف از پوشه ای به نام Files استفاده میکنیم که ساختار پوشه ها و فایلهای داخل آن به صورت زیر است
دستور :
find Files -depth

روش اول : استفاده از دستورات find,xargs,rename با همدیگر
rename یک دستور بسیار ساده در لینوکس هست که برای تغییر نام چند فایل در یک پوشه بکار میرود
دستور :
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
با توجه به تصویر بالا مشاهده میکنید که نام تمامی زیر شاخه های پوشه مورد نظر ما به حروف کوچک تبدیل شده است
توضیحات روش بالا:
-depth تمام زیر شاخه های یک پوشه را لیست میکند
-n 1 دستور xargsبرای استفاده از حداکثر یک استدلال در هر خط فرمان از خروجی دستور find بکار میرود
روش دوم : استفاده از دستورات mv و find داخل اسکریپت
اول از همه فایل اسکریپت را ایجاد کرده و کد مشخص شده را داخل آن کپی میکنیم(بنده فایل اسکریپ را در پوشه root ایجاد کرده ام)
کد :
#!/bin/bash
#print usage
if [ -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if [ "${name}" != "${new_name}" ]; then
[ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0
سپس فایل اسکریپت را ذخیره کرده و مجوزهای دسترسی لازم را به این فایل داده و آن را اجرا میکنیم

پس از اجرای کد بالا نتیجه به صورت زیر حاصل میشود

نوشته شده توسط : محسن فرجامی (931831251)
منبع : https://www.tecmint.com/rename-all-files-and-directory-names-to-lowercase-in-linux/