उम्र के हिसाब से फाइलें हटाना


16

क्या एक निर्देशिका की सभी फाइलों को हटाने की आज्ञा है जिसे N दिनों में संशोधित नहीं किया गया है ? मुझे कुछ पुराने लॉग को साफ करने की आवश्यकता है।

जवाबों:


24

यह 5 दिनों से अधिक पुरानी सभी फ़ाइलों को हटा देगा, आप -name '*log'इसमें और अधिक सटीक होने के लिए भी डाल सकते हैं और आप maxdepthखोज कमांड में भी निर्दिष्ट करना चाह सकते हैं ।

find /some/dir -type f -mtime +5 -delete


5
हालांकि बुद्धिमान sysadmins यह सुनिश्चित करने के -lsबजाय -deleteकि वे जो कुछ भी चाहते थे, उसे नहीं हटाएंगे। हाँ, यहाँ अनुभव से बोल रहा हूँ।
शादुर

2
अनुभव से बोलते हुए, वे अपना रास्ता भी जाँचते हैं। या नहीं, क्योंकि मैंने एक बार / some/dir/संस्करण किया था । :(
हेन्स

3

साथ zshऔर (.m+n) ग्लोब क्वालिफायर : .चयन केवल नियमित रूप से फ़ाइलें, m+nचयन फ़ाइलें से ज्यादा संशोधित n दिन पहले;
उदाहरण के लिए वर्तमान निर्देशिका में उन फाइलों को सूचीबद्ध करें जिन्हें 9 दिनों से अधिक समय से संशोधित किया गया था:

print -rl -- *(.m+9)

Dडॉट फ़ाइलें शामिल करने के लिए जोड़ें :

print -rl -- *(D.m+9)

या यदि आप पुन: प्राप्त करना चाहते हैं (और सूची जैसे केवल समाप्त होने वाली फ़ाइलें .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

की जगह print -rlके साथ rmअगर आप परिणाम से खुश हैं; हालाँकि आपको zargsबहुत सी फाइलें ( तर्क सूची से बचने के लिए ) बहुत अधिक फ़ाइलों का उपयोग करना पड़ सकता है :

autoload zargs
zargs ./**/*(.m+9) -- rm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.