منبع اصلی نوشتار زیر در این لینک قرار دارد

تبدیل نام فایل ها به حروف کوچک

سیستم عامل های یونیکسی مانند لینوکس به کوچکی و بزرگی حروف حساس است بنابراین دو دایرکتوری dirname و Dirname متفاوت از یکدیگر هستند. ممکن است لازم باشد تا نام تمامی فایل های درون یک دایرکتوری را به حروف کوچک تبدیل کنید.

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

#!/bin/sh
# lowerit
# convert all file names in the current directory to lower case
# only operates on plain files--does not change the name of directories
# will ask for verification before overwriting an existing file
for x in `ls`
	do
		if [ ! -f $x ]; then
			continue
		fi
		lc=`echo $x  | tr '[A-Z]' '[a-z]'`
		if [ $lc != $x ]; then
			mv -i $x $lc
		fi
	done

در خط ۶ از دستور ls درون یک حلقه for برای بدست آوردن نام ها استفاده می شود. نام ها در متغیری به نام x ذخیره می شوند. سپس توسط حلقه شرطی if چک می شود که نام بدست آمده متعلق به یک دایرکتوری نباشد. به عبارتی f- ! یعنی اینکه اگر فایل نبود، مورد بعدی بررسی شود.

در خط ۱۱ نام درون متغیر x، توسط دستور tr از حروف بزرگ به حروف کوچک تبدیل و درون متغیر lc دخیره می شود. در خط ۱۲ بررسی می شود که نام تغییر یافته به حروف کوچک (متغیر lc) با نام اصلی (متغیر x) متفاوت باشد. در نهایت در خط ۱۳ از دستور mv برای تغییر نام (Rename کردن) نام فایل از محتوای متغیر x (نام اصلی) به نام تغییر یافته (محتوای متغیر lc) استفاده می شود. خطوط ۸ تا ۱۴ درون حلقه for قرار دارند و حلقه for تا زمانی اجرا می شود که فایلی درون دایرکتوری جاری وجود داشته باشد.

همچنین می توانید آموزش های دیگر bash را مطالعه کنید.



برچسب ها : , , , , , , , , , , , , , , ,