PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل نام فایل ها در سرور



Esi
August 9th, 2011, 18:53
سلام .

من حدود 500 تا فایل روی سرور دارم که همشون اخرشون عبارت vampi3 داره و من میخوام همه رو به عبارت vampie تغییر بدم . سرور لینوکس و کنترل پنل whm هست . راهی هست که با یک دستور کل این کلمات جابجا بشه ؟

ehsanx
August 9th, 2011, 19:07
سلام .

من حدود 500 تا فایل روی سرور دارم که همشون اخرشون عبارت vampi3 داره و من میخوام همه رو به عبارت vampie تغییر بدم . سرور لینوکس و کنترل پنل whm هست . راهی هست که با یک دستور کل این کلمات جابجا بشه ؟

دسترسی شل داری روش؟

Esi
August 10th, 2011, 19:06
بله دسترسی روت دارم . البته بگم نام فایل ها همه یکی نیست ، فقط همه یه عبارت مشترک دارند و اون عبارت باید به یه عبارت یکسان دیگه تغییر کنه .

REXNET
August 10th, 2011, 23:32
علاوه بر یک حلقه for، باید از REGEX یا همون REGULAR EXPRESSION مناسب در خط فرمان لینوکس استفاده کنید.

ehsanx
August 11th, 2011, 05:18
بله دسترسی روت دارم . البته بگم نام فایل ها همه یکی نیست ، فقط همه یه عبارت مشترک دارند و اون عبارت باید به یه عبارت یکسان دیگه تغییر کنه .

منظورتون اینه میخواهید توی یه سری فایل که اسمهاشون متفاوته و پوشه‌های متفاوت اما همه زیر یک پوشه اصلی، مثل یک ویرایشگر متن replace all کنید؟

Esi
August 11th, 2011, 15:14
دقیقا همین طور هست !

ehsanx
August 11th, 2011, 15:42
find /path/to/folder/ -type f -exec sed -i 's/vampi3/vampie/' {} \;

Esi
August 11th, 2011, 19:44
متاسفانه این کد کاربردی نداشت . هیچ تغییری اعمال نکرد . یه بار دیگه عرض میکنم که نام کل فایل تغییری نمیخوام بکنه فقط یه قسمتی از نام فایل ها replace بشه !

REXNET
August 11th, 2011, 19:46
دوست عزیز عرض کردم خدمتتون که با دستور rename و استفاده از REGEX مناسب میتونید به خواسته تون برسید. برای اعمال دستور روی تمام فایل های موجود در یک فولدر نیز فقط کافیه از یک حلقه for استفاده کنید.

commit
August 11th, 2011, 19:57
دوست عزیز عرض کردم خدمتتون که با دستور rename و استفاده از REGEX مناسب میتونید به خواسته تون برسید. برای اعمال دستور روی تمام فایل های موجود در یک فولدر نیز فقط کافیه از یک حلقه for استفاده کنید.

چرا دستورش رو نمینویسید و جمعی رو از نگرانی خارج نمیکنید؟

ehsanx
August 11th, 2011, 20:07
منظورتون اینه میخواهید توی یه سری فایل که اسمهاشون متفاوته و پوشه‌های متفاوت اما همه زیر یک پوشه اصلی، مثل یک ویرایشگر متن replace all کنید؟


دقیقا همین طور هست !


متاسفانه این کد کاربردی نداشت . هیچ تغییری اعمال نکرد . یه بار دیگه عرض میکنم که نام کل فایل تغییری نمیخوام بکنه فقط یه قسمتی از نام فایل ها replace بشه !

دستوری که من نوشتم توی همه فایلها به جای عبارت vampi3 عبارت vampie رو جایگزین می‌کرد. ظاهرا چیزی که شما میخواهید اینکه اسم فایل تغییر کنه.

اگر اینبار واقعا اینطور هست، و همه فایلهاتون توی یه فلدر هستند، به اون فلدر برید و این دستور رو بزنید:
rename 's/.vampi3/.vampie' *.vampi3

لطفا از فایلهاتون کپی بگیرید و بعدا این دستور رو بزنید.

Esi
August 11th, 2011, 21:16
متاسفانه اینم کار نکرد .من عذر میخوام اگه قبلا منظورم رو بد معرفی کردم. مثال میزنم بهتر متوجه بشوید :
من توی یه پوشه مثلا 50 تا فایل دارم با نام های مختلف که توی نام اکثرشون یه عبارت مشترک (فرض عوض میکنم به نام سایت تا بهتر جا بیفته) وجود داره الان نام یکی از اون فایلها Alive-Video-Converter-5.0.3.2--www.Myoldsite.com--.zip هست .حالا من چون دامنه سایت رو عوض کردم ، در بانک اطلاعاتی سایت اسم تمام فایل هام خودکار به نام دامنه جدید ثبت شده . علاوه بر این یه سری لغات هم دچار تغییر شدند (دقیقا مثل همین ) حالا من میخوام بجای دونه دونه یه دستور بدم تمام فایل ها از اسم قبلی به اسم Alive-Video- Converter-5.0.3.2--www.Mynewsite.com--.zip تغییر کنند ! الان دقیقا مطلب جا افتاد ؟ ;;)

دوست عزیز عرض کردم خدمتتون که با دستور rename و استفاده از REGEX مناسب میتونید به خواسته تون برسید. برای اعمال دستور روی تمام فایل های موجود در یک فولدر نیز فقط کافیه از یک حلقه for استفاده کنید.


چرا دستورش رو نمینویسید و جمعی رو از نگرانی خارج نمیکنید؟



در تکمیل فرمایش دوست عزیزمون commit ، یادآوری از صدا و سیمای میهن و برخی ضرب المثل های معروف می کنم .

REXNET
August 11th, 2011, 23:08
هلو برو تو گلو همیشه راحت تره دیگه... گوگل هم که همه تحریم کردم جدیدا !!!

براتون یک اسکریپت نوشتم که این کار رو براتون انجام بده... ضمیمه کردم که میتونید دانلود کنید. فقط دو نکته:

1. فایل رو حتما با نام rename.sh و در پوشه فایل هاتون قرار بدهید.
2. با دستور زیر میتونید از این اسکریپت استفاده کنید:

./rename.sh old-phrase new-phrase

ارادتمند


** ویرایش :
1. کاراکتر اضافه آخر فایل پاک شد.
2. اگر سیستم عامل تان ویندوز است، لطفا محتویات فایل رو بصورت دستی و نه توسط FTP به سرور انتقال دهید. (طبق فیلم آموزشی تهیه شده در صفحه بعد)

ehsanx
August 11th, 2011, 23:24
rexnet عزیز، دستوریکه من نوشتم همین کار اسکروپت شما رو میکنه، فقط لازمه که مقادیر ش رو درست ست کنند.

rename 's/old/new/' *

REXNET
August 11th, 2011, 23:29
rexnet عزیز، دستوریکه من نوشتم همین کار اسکروپت شما رو میکنه، فقط لازمه که مقادیر ش رو درست ست کنند.

Rename 's/old/new/' *

ببخشید من ندیده بودم پست شما رو، البته روش کار اسکریپتی که نوشتم فرق می کنه... برای چنین کاری از regex هم میشه استفاده کرد ولی نوشتن قسمت regex دستور، ملزم به اینه که دقیقا ترکیب فایل های ایشون رو میدونستم که توضیح نداده بودند... حالا این اسکریپت به یه روش دیگر همون کار رو داره انجام میده.

موفق باشید

ehsanx
August 11th, 2011, 23:32
ببخشید من ندیده بودم پست شما رو، البته روش کار اسکریپتی که نوشتم فرق می کنه... برای چنین کاری از regex هم میشه استفاده کرد ولی نوشتن قسمت regex دستور، ملزم به اینه که دقیقا ترکیب فایل های ایشون رو میدونستم که توضیح نداده بودند... حالا این اسکریپت به یه روش دیگر همون کار رو داره انجام میده.

موفق باشید

من کلا حال کردم که یه نفر اینجا دست به آچاره :-)
برای جایزه اش خواستم (اگر به احتمال یک درصد این دستور رو نمیشناسی) حال داده باشم :-)

خوش باشی

Esi
August 11th, 2011, 23:48
ممنون ، فردا چک میکنم خبرش رو همینجا اعلام میکنم . ;;)

Esi
August 17th, 2011, 16:18
ببخشید دیر شد . من فایل رو باز کردم و عبارت echo "Usage : ./rename oldwebsite.com newwebsite.com"; رو توش ذخیره کردم .


بعد فایل رو در پوشه ای که میخواستم توسط ftp آپلود کردم و با putty داخل اون پوشه رفتم و دستور رو زدم ./rename oldwebsite.com newwebsite.com

که این پیغام رو مشاهده کردم : -bash: ./rename.sh: Permission denied

REXNET
August 17th, 2011, 17:10
اسکریپت رو CHMOD باید بکنید، بدین صورت:


chmod 777 rename.sh

بعدش میتونید بازش کنید...

---------- Post added at 04:10 PM ---------- Previous post was at 03:58 PM ----------

راستی، در محتویات داخل فایل نباید تغییری ایجاد می کردید.... اون چیزی که تغییر دادید راهنمای استفاده از اسکریپت بود!!! :دی

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

Esi
August 17th, 2011, 17:21
-bash: ./rename.sh: /bin/bash^M: bad interpreter: No such file or directory

Esi
August 17th, 2011, 19:18
خب من هم دقیقا همین کار رو انجام دادم که پیغام صفحه قبل رو داد .

---------- Post added at 06:18 PM ---------- Previous post was at 05:01 PM ----------

ممنون از همه دوستانی که اینجا وقت گذاشتند ، ما ترجیح دادیم مشکل رو به صورت دستی حل کنیم . فکر میکنم از اول هم باید همین کار رو میکردیم . بازم تشکر

REXNET
August 17th, 2011, 19:39
یه چیز جور در نمیاد... :39: میدادید خودم براتون انجام میدادم چه کاری بود این همه فایل رو دستی ویرایش کنی آخه !! :|

---------- Post added at 06:39 PM ---------- Previous post was at 06:35 PM ----------

چند دقیقه صبر کنید، یک فیلم آماده کنم از نحوه انجام کار....

REXNET
August 17th, 2011, 20:13
عزیز موقع تهیه فیلم متوجه یک نکته شدم و اون اینکه آخر فایل اسکریپت یک خط جدید درج شده (Enter خورده) و انتقال فایل توسط FTP باعث میشه لینوکس این رو به عنوان کاراکتر M^ بشناسه و مشکل ایجاد بشه...

طبق فیلمی که بنده تهیه کردم و در این پست گذاشته ام، محتویات فایل رو بصورت دستی ببرید به سرور تا دیگه چنین مشکلی پیش نیاد... فیلم رو طوری ساختم که اشکالات کار هم درش باشه و همونجا نحوه برطرف کردنش رو هم آورده ام...

ارادتمند

Esi
August 18th, 2011, 14:57
مرسی گلم ، ولی در هر صورت این ویرایش انجام شد . ایشالله در موارد بعدی از این اسکریپت استفاده کنیم که دیگه راحت باشیم . همین طور دوستان دیگر به این درد مبتلا نشوند .