انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: abdossamad2003 در 26 بهمن 1396، 11:44 ق‌ظ

عنوان: پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم(حل شد)
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 11:44 ق‌ظ
با سلام خدمت دوستان
در لینوکس دستوری وجود دارد که بتوان مثلا در یک فولدر تمامی فایلهای آن را پاک کرد به استثنای چند فایل با نام معلوم

با تشکر
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: Silvio Dante در 26 بهمن 1396، 02:36 ب‌ظ
خب چند فایلی که اسمشون مشخصه رو از اون فولدر بیار بیرون بقیه رو حذف کن و دوباره اون چند فایل رو بزار سر جاش. (البته فکر کنم اینو خودتون هم بدونید ;D )
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 03:20 ب‌ظ
با سلام
در لینوکس دستوری وجود دارد که بتوان مثلا در یک فولدر تمامی فایلهای آن را پاک کرد به استثنای چند فایل با نام معلوم
بله راه ها و دستورات مختلفی هست ولی شما می تونین از همون rm هم استفاده کنین که فرم کلیش این شکلیه:
rm !(exception1|exception2|...|exceptionn)برای مثال با این دستور میایم فایل هایی به اسم 1 تا 100 توی پوشه ی testfolder ایجاد می کنیم:
mkdir testfolder
for i in  {1..100}; do touch testfolder/$i; done
حالا مثلا می خوایم تمام فایل ها به استثنای اسامی 20 و 30 پاک شن:
cd testfolder && rm !(20|30)این طوری فقط فایل های 20 و 30 باقی می مونه
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 04:23 ب‌ظ
با تشکر از پاسخ دوست عزیز ali76
دستور شما در bash کار می کنه ولی در csh
اگه میشه معادل csh اون رو هم بگید
با تشکر
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 05:20 ب‌ظ
والا من الان بیرونم واس همون به csh دسترسی ندارم که ببینم این دستور جدید کار می کنه یا نه (با گوشی تایپ می کنم)
خودتون اینو یه تستی بکنین نتیجه رو بگین:
ls | egrep -v "20|30" | xargs rm
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 06:30 ب‌ظ
با تشکر از دوست عزیز
دستور در csh برای فایلها جواب می ده ولی دایرکتوریها را حذف نمی کنه مثلا اگر در یک دایرکتوری فایل و دایرکتوری های a,b,c,d وجود داشته باشه در bash می توان با دستور rm -rf !(a)می توان تمامی فایها و دایرکتوریها رو حذف کرد به استثنای a
ولی در csh دایرکتوری ها حذف نمیشه
ls | egrep -v "a" | xargs rmبه نظر شما چه تغییری در این دستور بدیم
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 06:37 ب‌ظ
بله در هر دو حالت دایرکتوری ها پاک نمی شن چون شما گفته بودین فایل ها رو پاک کنه و من دستور رو به همین شکل نوشتم.
حذف دایرکتوری با rm با سوییچ r ممکن هستش و در نتیجه شما می تونین با اضافه کردن این سوییچ در هر دو دستور مسیرها رو هم در کنار فایل ها حذف کنین.
بش:
rm -r !(20|30)csh:
ls | egrep -v "20|30" | xargs rm -r
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 06:46 ب‌ظ
شما از مرجع خاصی استفاده می کنید برای دستورات لینوکس یا اینکه از جستجوی اینترنتی یا ...
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 06:57 ب‌ظ
الان رو می گین یا کلا ؟
الان که نه ، حتی بخشی از کدا رو توی گوشی تایپ کردم و به لپ تاپ دسترسی نداشتم.
ولی قبلا کتابای زیر رو برای بش مطالعه کرده بودم:
نقل‌قول
bash Cookbook: Solutions and Examples for bash Users
Mastering Linux Shell Scripting
در کنار اینا man page ها خیلی خیلی مفیدن و سوییچ ها و ریز جزئیات رو می شه ازشون یاد گرفت.

در ضمن مشکلتون حل شد ؟ اگه شدش عبارت حل شد رو به عنوان اضافه کنید
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 07:02 ب‌ظ
در مورد man page اگه منظورتون دستور مانند باشه اینها این کدی که شما گفتید رو نگفته
man rmهمچنین man پوسته csh رو چه جوری میشه دید اگه پوسته پیش فرض لینوکس bash باشه

با تشکر
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 07:29 ب‌ظ
این دستورات چندین قسمت دارن و تنها از یک جز تشکیل نمی شن که شما بتونین عین همین دستور رو توی من پیج ببینین مثلا اینا :
دستور ls:
man lsخروجی این دستور لیست تمام فایل ها و مسیرهای موجود در یک مسیره
ولی مثلا مخفی ها رو نیشون نمی ده و اگه شما بخواین مخفی ها هم پاک شن باید از به جای ls از ls -A استفاده کنین به این صورت:
ls -A | egrep -v "20|30" | xargs rm -r
دستور egrep:
man egrepخروجی این دستور قسمتی از خروجی ls هستش که مطلوب ما هستش
سوییچ -v توی این دستور خروجی برعکس رو می ده یعنی هر چیزی جز اونایی که ما می نویسیم (مثلا اینجا می خوایم که لیست تمام فایل ها و مسیرها به جز 20 و 30 نشون داده بشه)
نقل‌قول
       -v, --invert-match
              Invert the sense of matching, to select non-matching lines.

عملگر یا:
توی اینجا "a|b" می گه هر کدوم که شامل a یا b هستن رو نشون بده.

دستور xargs:
man xargsبرای انتقال ورودی استاندارد به rm هستش که شامل لیستی از فایل ها هستش که ما می خوایم پاک بشه

و در نهایت دستور rm :
man rmبرای پاک کردن استفاده می شه که شما می تونین مثلا اطلاعات مربوط به سوییچ -r رو توی من پیج اون ببینین:
نقل‌قول
       -r, -R, --recursive
              remove directories and their contents recursively

در نهایت با کنار هم قرار دادن این بخش ها می تونین به دستوری که دادم برسین.

در ضمن man پیج پکیج ها توی بش و csh تفاوتی ندارن و به زدن man به خروجی یکسانی می رسین ولی خود بش یا csh هم man page دارن و اطلاعات خوبی رو در مورد ساختار و اسکریپت نویسی توشون بهمون می دن:
man bash
man csh
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 08:20 ب‌ظ
با تشکر
منظور من کد زیره:
rm !(20|30)اگه ما دستور man rm را اجرا کنیم هیچ توضیحی در مورد ! rm نداده است.
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 08:51 ب‌ظ
خواهش می کنم
اون ویژگی مربوط rm نیستش مربوط به بش هستش دقیقاً برای همین هستش که توی csh کار نمی کرد اینم تیکه ی مربوط به اون دستور توی man bash :
!(pattern-list)
Matches anything except one of the given patterns

فقط اگه مشکلتون حل شدش عبارت (حل شد) رو به عنوان اضافه کنین
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم(حل شد)
ارسال شده توسط: abdossamad2003 در 26 بهمن 1396، 11:17 ب‌ظ
با تشکر از دوست عزیز
عنوان: پاسخ : پاک کردن تمامی فایلهای یک پوشه به استثنای یک یا چند فایل معلوم(حل شد)
ارسال شده توسط: علی رزم دیده در 26 بهمن 1396، 11:18 ب‌ظ
با تشکر از دوست عزیز
خواهش می کنم خوشحالم مشکلتون حل شد