خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش Rename کردن دایرکتوری ها در لینوکس

آموزش Rename کردن دایرکتوری ها در لینوکس
تغییر نام یا rename کردن دایرکتوری ها و فولدرها یکی از اساسی ترین عملیاتی است که کم و بیش در سیستم لینوکس انجام می دهید. می توانید با چند کلیک یا با استفاده از ترمینال خط فرمان، نام دایرکتوری ها را از فایل منیجر تغییر دهید.

نرم افزار سامانه مودیان راهکار
این مقاله نحوه تغییر نام دایرکتوری ها با استفاده از خط فرمان را توضیح می دهد.




در سیستم عامل های لینوکس و یونیکس، می توانید از دستور mv برای تغییر نام یا انتقال فایل ها و دایرکتوری ها از یک مکان به مکان دیگر استفاده کنید.
Syntax کلی دستور mv برای move کردن دایرکتوری ها بصورت زیر است:

mv [OPTIONS] source destination

به عنوان مثال، برای تغییر نام دایرکتوری dir1 به dir2 باید اجرا کنید:

mv dir1 dir2

هنگام تغییر نام دایرکتوری ها، باید دقیقا دو پارامتر برای دستور mv مشخص کنید. اولین پارامتر نام فعلی دایرکتوری و دومین پارامتر نام جدید است. توجه به این نکته ضروری است که اگر dir2 از قبل وجود داشته باشد، dir1 به دایرکتوری dir2 انتقال داده می شود.
برای rename کردن فولدری که در دایرکتوری جاری نیست، باید مسیر را در دستور مشخص کنید.

mv /home/user/dir1 /home/user/dir2

تغییر نام یک فولدر تکی، کار ساده ای است، اما rename کردن چندین دایرکتوری به طور همزمان می تواند یک چالش به خصوص برای کاربران جدید لینوکس باشد.
تغییر نام چندین دایرکتوری به طور همزمان به ندرت مورد نیاز است. rename کردن چندین دایرکتوری یا فولدر به ندرت مورد نیاز کاربران است.

تغییر نام چندی دایرکتوری با دستور mv در لینوکس

دستور mv می تواند هر بار فقط یک فایل را تغییر نام دهد. با این حال، می توان آن را همراه با دستورات دیگری مانند find یا درون loop ها برای تغییر نام چندین فایل به طور همزمان استفاده کرد. در مثال زیر خواهید دید که با کمک Bash for loop برای اضافه کردن تاریخ جاری سیستم به نام همه دایرکتوری ها در دایرکتوری فعلی استفاده کنید:

for d in *; do
if [ -d "$d" ]; then
mv -- "$d" "${d}_$(date +%Y%m%d)"
fi
done

حالا اجازه دیهد همراه با هم کد فوق را کمی آنالیز کنیم و ببنیم که چه کاری دقیقا انجام می دهد:
خط اول یک loop ایجاد می کند و در یک لیست همه فایل ها تکرار می شوند. خط دوم بررسی می کند که آیا فایل یک دایرکتوری است یا خیر. خط سوم تاریخ جاری را به هر فولدر یا دایرکتوری اضافه می کند. یک راه حل دیگر برای انجام همان کار با استفاده از mv در ترکیب با find وجود دارد:

find . -mindepth 1 -prune -type d -exec sh -c 'd="{}"; mv -- "$d" "${d}_$(date +%Y%m%d)"' \;

دستور find با استفاده از گزینه exec- تمام دایرکتوری ها را یکی یکی به mv می دهد. در رشته {} نام دایرکتوری که در حال پردازش است قرار می گیرد. همانطور که از مثال ها می بینید، تغییر نام چندین دایرکتوری با mv کار آسانی نیست زیرا نیاز به دانش خوب اسکریپت نویسی Bash دارد.

تغییر نام چندین دایرکتوری با دستور rename در لینوکس

دستور rename برای تغییر نام چندین فایل و دایرکتوری استفاده می شود. این دستور از mv پیشرفته تر است زیرا به دانش ابتدایی و پایه ای regular expression نیاز دارد. دو نسخه از دستور با syntax متفاوت وجود دارد. ما از نسخه Perl دستور rename استفاده خواهیم کرد. فایل ها با توجه به perl regular expression داده شده تغییر نام خواهد یافت.
مثال زیر نشان می دهد که چگونه می توان فاصله یا Space ها را در نام همه فولدرها در دایرکتوری جاری با زیرخط یا _ جایگزین کرد:

find . -mindepth 1 -prune -type d | rename 'y/ /_/'

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


در مثال زیر قصد داریم نام همه دایرکتوری ها را از حروف بزرگ انگلیسی به حروف کوچک تغییر دهیم.

find . -mindepth 1 -prune -type d | rename 'y/A-Z/a-z/'

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز