मैं एक निर्देशिका में आधी फाइलें कैसे हटा सकता हूं?


1

एक निर्देशिका में 001 से 100 तक के नाम वाली फाइलें हैं। आप 2,4,6,8 ... 100 कैसे हटा सकते हैं। और क्या इसे स्क्रिप्ट के रूप में लिखा जा सकता है। जैसे ही निर्देशिका सप्ताह पुरानी हो जाती है, इसे चलाना पड़ता है। और एक महीने बाद फिर से। लक्ष्य हाल ही के डेटा के आधे को हटाना है।

जवाबों:


3

आप एक स्टेप के साथ लूप के लिए एक बैश का उपयोग कर सकते हैं (यदि इसका bash v4)

तो यह होगा

#!/usr/bin/bash

cd /path/to/directory/

for i in `ls *{0..100..2}`
do 
    rm $i
done

इसे हर हफ्ते / महीने में चलाने के लिए अपने कोंट्रेब में रखा जा सकता है

00 11 1 * * /path/to/script.sh इसे महीने के पहले दिन सुबह 11 बजे चलाएगा

00 11 * * 1 /पथ / //cript.sh इसे हर सोमवार को चलाएगा


मुझे यह विचार पसंद आया। क्या होगा अगर मैं नाम के अनुसार फ़ाइलों को सॉर्ट करना चाहता हूं। और पहले सप्ताह के लिए, और फिर एक महीने के बाद, और फिर तिमाही में, और फिर एक वर्ष: सॉर्ट की गई सूची में हर दूसरी फ़ाइल को हटा दें।
अनवेश कुरपति

अच्छी बात है। क्या होगा यदि नाम तय नहीं किए गए हैं, लेकिन वर्णानुक्रम में क्रमबद्ध हैं, और निर्देशिका को एक सप्ताह और एक महीने && तिमाही && वर्ष के बाद इस लूप से गुजरना होगा। इसलिए यदि मेरे पास पहली बार में 1024 फाइलें हैं, तो एक हफ्ते के बाद मेरे पास 512, फिर 256, फिर 128 और एक साल के बाद 64 होनी चाहिए। ताकि हालिया डेटा उच्च रिज़ॉल्यूशन में रहे, जबकि पुराना डेटा पूरी तरह से हटाया नहीं गया है।
अनवेश कुरपति 12

ईमानदारी से कहूं तो बेहतर होगा कि एक अलग सवाल के रूप में पूछा जाएगा
Fegnoid

1

कुछ इस तरह से काम करना चाहिए (अभी डुप्लिकेट डेटा पर पहले परीक्षण नहीं कर सकते हैं ) -

 find /path/to/directory -type f -name '*[02468].jpg' -delete

या साथ rm-

 find /path/to/directory -type f -name '*[02468].jpg' -exec rm {} +
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.