मैं सभी सबफ़ोल्डरों में एक निश्चित आकार से छोटी सभी फ़ाइलों को कैसे हटाऊं?


88

मेरे पास कई सब-फोल्डर के साथ एक फ़ोल्डर है जिसमें छोटी tif फाइलें (160kb से कम) हैं जो बड़ी पीडीएफ फाइलों में एक साथ विलय की गई हैं, साथ में कुछ बड़ी बहु-पृष्ठ tif फाइलें हैं।

मैं बड़ी फ़ाइलों (tif या pdf) को हटाने और निर्देशिका संरचना को बनाए रखने के बिना सभी छोटी tif फ़ाइलों को हटाना चाहता हूं। मैं कमांड-लाइन का उपयोग करके लिनक्स पर इसके बारे में कैसे जा सकता हूं?

जवाबों:


155
find . -name "*.tif" -type 'f' -size -160k -delete

-deleteसही फ़ाइलों को मिला है, यह सत्यापित करने के लिए पहले बिना आदेश चलाएँ ।

-पहले ध्यान दें 160k। बस 160kइसका मतलब है ठीक 160 किलोबाइट। -160kमतलब 160 किलोबाइट से छोटा। +160kमतलब 160 किलोबाइट से बड़ा।

-type 'f'बलों फाइलों पर ही कार्य करने के लिए आदेश और निर्देशिका को छोड़ दें। यदि पथ में नाम से मेल खाने वाले फ़ोल्डर हैं, तो यह त्रुटियों से बचता है *.tif

यदि आप बाइट्स में आकार को फ़िल्टर करना चाहते हैं (जैसे कि 160 किलोबाइट के बजाय 160 बाइट्स में) तो आपको इसे इस तरह लिखना होगा 160c:। यदि आप अभी लिखते हैं 160तो इसकी व्याख्या 160 * 512 बाइट्स के रूप में की जाएगी। यह POSIX द्वारा एक अजीब आवश्यकता है। अधिक जानकारी के लिए यहां पढ़ें: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


Ubuntu आदमी पेज यह उल्लेख करने के लिए लगता है। "TESTS" अनुभाग के ठीक नीचे: संख्यात्मक तर्कों को n से अधिक n के लिए + n के रूप में निर्दिष्ट किया जा सकता है, n के लिए n से कम, n के लिए n।
jdg

1
धन्यवाद। मेरे साथ ऐसा नहीं हुआ कि सूचना मेन्यू में कहीं और हो सकती है।
lesmana

यह अच्छा है कि यह कमांड पुनरावर्ती रूप से भी काम करे। मेरा उपयोग मामला 12kB के तहत .txt फ़ाइलों को हटाने के लिए होगा।
सूर्य

sudo के लिए कोई ज़रूरत नहीं है?
जीन-फ्रांकोइस गागन

11
बाइट्स में आकारों के लिए 50c निर्दिष्ट करें, 50b या 50 नहीं!
संध्या
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.