سلام .
من حدود 500 تا فایل روی سرور دارم که همشون اخرشون عبارت vampi3 داره و من میخوام همه رو به عبارت vampie تغییر بدم . سرور لینوکس و کنترل پنل whm هست . راهی هست که با یک دستور کل این کلمات جابجا بشه ؟
نمایش نسخه قابل چاپ
سلام .
من حدود 500 تا فایل روی سرور دارم که همشون اخرشون عبارت vampi3 داره و من میخوام همه رو به عبارت vampie تغییر بدم . سرور لینوکس و کنترل پنل whm هست . راهی هست که با یک دستور کل این کلمات جابجا بشه ؟
بله دسترسی روت دارم . البته بگم نام فایل ها همه یکی نیست ، فقط همه یه عبارت مشترک دارند و اون عبارت باید به یه عبارت یکسان دیگه تغییر کنه .
علاوه بر یک حلقه for، باید از REGEX یا همون REGULAR EXPRESSION مناسب در خط فرمان لینوکس استفاده کنید.
دقیقا همین طور هست !
find /path/to/folder/ -type f -exec sed -i 's/vampi3/vampie/' {} \;
متاسفانه این کد کاربردی نداشت . هیچ تغییری اعمال نکرد . یه بار دیگه عرض میکنم که نام کل فایل تغییری نمیخوام بکنه فقط یه قسمتی از نام فایل ها replace بشه !
دوست عزیز عرض کردم خدمتتون که با دستور rename و استفاده از REGEX مناسب میتونید به خواسته تون برسید. برای اعمال دستور روی تمام فایل های موجود در یک فولدر نیز فقط کافیه از یک حلقه for استفاده کنید.
دستوری که من نوشتم توی همه فایلها به جای عبارت vampi3 عبارت vampie رو جایگزین میکرد. ظاهرا چیزی که شما میخواهید اینکه اسم فایل تغییر کنه.
اگر اینبار واقعا اینطور هست، و همه فایلهاتون توی یه فلدر هستند، به اون فلدر برید و این دستور رو بزنید:
rename 's/.vampi3/.vampie' *.vampi3
لطفا از فایلهاتون کپی بگیرید و بعدا این دستور رو بزنید.
متاسفانه اینم کار نکرد .من عذر میخوام اگه قبلا منظورم رو بد معرفی کردم. مثال میزنم بهتر متوجه بشوید :
من توی یه پوشه مثلا 50 تا فایل دارم با نام های مختلف که توی نام اکثرشون یه عبارت مشترک (فرض عوض میکنم به نام سایت تا بهتر جا بیفته) وجود داره الان نام یکی از اون فایلها Alive-Video-Converter-5.0.3.2--www.Myoldsite.com--.zip هست .حالا من چون دامنه سایت رو عوض کردم ، در بانک اطلاعاتی سایت اسم تمام فایل هام خودکار به نام دامنه جدید ثبت شده . علاوه بر این یه سری لغات هم دچار تغییر شدند (دقیقا مثل همین ) حالا من میخوام بجای دونه دونه یه دستور بدم تمام فایل ها از اسم قبلی به اسم Alive-Video- Converter-5.0.3.2--www.Mynewsite.com--.zip تغییر کنند ! الان دقیقا مطلب جا افتاد ؟ ;;)
در تکمیل فرمایش دوست عزیزمون commit ، یادآوری از صدا و سیمای میهن و برخی ضرب المثل های معروف می کنم .
هلو برو تو گلو همیشه راحت تره دیگه... گوگل هم که همه تحریم کردم جدیدا !!!
براتون یک اسکریپت نوشتم که این کار رو براتون انجام بده... ضمیمه کردم که میتونید دانلود کنید. فقط دو نکته:
1. فایل رو حتما با نام rename.sh و در پوشه فایل هاتون قرار بدهید.
2. با دستور زیر میتونید از این اسکریپت استفاده کنید:
ارادتمندکد:./rename.sh old-phrase new-phrase
** ویرایش :
1. کاراکتر اضافه آخر فایل پاک شد.
2. اگر سیستم عامل تان ویندوز است، لطفا محتویات فایل رو بصورت دستی و نه توسط FTP به سرور انتقال دهید. (طبق فیلم آموزشی تهیه شده در صفحه بعد)
rexnet عزیز، دستوریکه من نوشتم همین کار اسکروپت شما رو میکنه، فقط لازمه که مقادیر ش رو درست ست کنند.
rename 's/old/new/' *
ببخشید من ندیده بودم پست شما رو، البته روش کار اسکریپتی که نوشتم فرق می کنه... برای چنین کاری از regex هم میشه استفاده کرد ولی نوشتن قسمت regex دستور، ملزم به اینه که دقیقا ترکیب فایل های ایشون رو میدونستم که توضیح نداده بودند... حالا این اسکریپت به یه روش دیگر همون کار رو داره انجام میده.
موفق باشید
ممنون ، فردا چک میکنم خبرش رو همینجا اعلام میکنم . ;;)
ببخشید دیر شد . من فایل رو باز کردم و عبارت echo "Usage : ./rename oldwebsite.com newwebsite.com"; رو توش ذخیره کردم .
بعد فایل رو در پوشه ای که میخواستم توسط ftp آپلود کردم و با putty داخل اون پوشه رفتم و دستور رو زدم ./rename oldwebsite.com newwebsite.com
که این پیغام رو مشاهده کردم : -bash: ./rename.sh: Permission denied
اسکریپت رو CHMOD باید بکنید، بدین صورت:
بعدش میتونید بازش کنید...کد:chmod 777 rename.sh
---------- Post added at 04:10 PM ---------- Previous post was at 03:58 PM ----------
راستی، در محتویات داخل فایل نباید تغییری ایجاد می کردید.... اون چیزی که تغییر دادید راهنمای استفاده از اسکریپت بود!!! :دی
اسکریپت رو بدون هیچ تغییری به سرور تون انتقال بدهید و سپس با وارد کردن دستوری که داده بودم، در خط فرمان خود لینوکس میتونید از اون استفاده کنید....
کد PHP:
-bash: ./rename.sh: /bin/bash^M: bad interpreter: No such file or directory
خب من هم دقیقا همین کار رو انجام دادم که پیغام صفحه قبل رو داد .
---------- Post added at 06:18 PM ---------- Previous post was at 05:01 PM ----------
ممنون از همه دوستانی که اینجا وقت گذاشتند ، ما ترجیح دادیم مشکل رو به صورت دستی حل کنیم . فکر میکنم از اول هم باید همین کار رو میکردیم . بازم تشکر
یه چیز جور در نمیاد... :39: میدادید خودم براتون انجام میدادم چه کاری بود این همه فایل رو دستی ویرایش کنی آخه !! :|
---------- Post added at 06:39 PM ---------- Previous post was at 06:35 PM ----------
چند دقیقه صبر کنید، یک فیلم آماده کنم از نحوه انجام کار....
عزیز موقع تهیه فیلم متوجه یک نکته شدم و اون اینکه آخر فایل اسکریپت یک خط جدید درج شده (Enter خورده) و انتقال فایل توسط FTP باعث میشه لینوکس این رو به عنوان کاراکتر M^ بشناسه و مشکل ایجاد بشه...
طبق فیلمی که بنده تهیه کردم و در این پست گذاشته ام، محتویات فایل رو بصورت دستی ببرید به سرور تا دیگه چنین مشکلی پیش نیاد... فیلم رو طوری ساختم که اشکالات کار هم درش باشه و همونجا نحوه برطرف کردنش رو هم آورده ام...
ارادتمند
مرسی گلم ، ولی در هر صورت این ویرایش انجام شد . ایشالله در موارد بعدی از این اسکریپت استفاده کنیم که دیگه راحت باشیم . همین طور دوستان دیگر به این درد مبتلا نشوند .