سؤال كيف يمكنني حذف جميع الملفات الأصغر من حجم معين في جميع المجلدات الفرعية؟


لدي مجلد يحتوي على العديد من المجلدات الفرعية التي تحتوي على ملفات tif صغيرة (أقل من 160 كيلوبايت) والتي تم دمجها معًا في ملفات pdf أكبر ، مع بعض ملفات tif كبيرة متعددة الصفحات.

أريد حذف جميع ملفات tif الصغيرة دون حذف الملفات الأكبر (tif أو pdf) والإبقاء على بنية الدليل. كيف أمارسها في لينكس باستخدام سطر الأوامر؟


72
2017-09-12 09:57


الأصل




الأجوبة:


find . -name "*.tif" -size -160k -delete

قم بتشغيل الأمر بدون -delete أولاً للتحقق من العثور على الملفات الصحيحة.

لاحظ ال - قبل 160k. مجرد 160k يعني بالضبط 160 كيلوبايت -160k يعني أصغر من 160 كيلوبايت. +160k يعني أكبر من 160 كيلوبايت.

إذا كنت تريد تصفية الحجم بالبايت (كما هو الحال في 160 بايت بدلاً من 160 كيلوبايت) ، فيجب عليك كتابتها على النحو التالي: 160c. إذا كنت تكتب فقط 160 سيتم تفسيره كـ 160 * 512 بايت. هذا هو مطلب غريب من قبل POSIX. اقرأ هنا لمزيد من التفاصيل: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


125
2017-09-12 10:04



يبدو أن صفحة رجل أوبونتو تذكر هذا. أسفل قسم "TESTS": يمكن تحديد الوسيطات الرقمية كـ + n لأعلى من n و n لأقل من n و n لـ n بالضبط. - jdg
شكر. لم يحدث لي أن المعلومات قد تكون في مكان آخر في الصفحة الرئيسية. - lesmana
من الجيد أن يعمل هذا الأمر أيضًا بشكل متكرر. ستكون حالة الاستخدام الخاصة بي لحذف ملفات .txt أقل من 12 كيلو بايت. - Sun
لا حاجة ل sudo؟ - Jean-François Gagnon
بالنسبة للأحجام بالبايت ، حدد 50c ، وليس 50b أو 50! - Evengard