گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

تغییر نام تمامی فایلها و پوشه ها به حروف کوچک در لینوکس

در این مطلب شما یاد خواهید گرفت که چطور در لینوکس نام تمامی فایلها و پوشه ها را به حروف کوچک تبدیل کنید.

چندین راه برای انجام این کار وجود دارد.اما ما به توضیح دو راه کارآمد و قابل اعتماد میپردازیم.
 

 

در اینجا ما برای رسیدن به هدف از پوشه ای به نام Files  استفاده میکنیم که ساختار پوشه ها و فایلهای داخل آن به صورت زیر است


دستور :



find Files -depth








روش اول : استفاده از دستورات find,xargs,rename  با همدیگر

rename  یک دستور بسیار ساده در لینوکس هست که برای تغییر نام چند فایل در یک پوشه بکار میرود


ما به صورت زیر میتوانیم با استفاده از دستورات rename  و find  به صورت همزمان برای تغییر نام پوشه ها و زیرشاخه های یک پوشه عمل  کنیم


دستور :


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/


نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد