यदि आपने फ़ाइलों को ऐसे निकाला है कि संग्रह में संशोधन टाइमस्टैम्प को निकाली गई प्रतियों में संरक्षित नहीं किया गया है (बल्कि निकाली गई फ़ाइलों का अपना सामान्य संशोधन समय है) तो इस पर हमला करने का सही तरीका संशोधन समय है। सभी निकाले गए फ़ाइलों में उस निर्देशिका में सबसे हाल ही में संशोधित मौजूदा फ़ाइल की तुलना में एक नया संशोधन टाइमस्टैम्प है।
यहाँ एक साधारण स्थिति है।
मान लीजिए कि वर्तमान निर्देशिका में कोई भी मौजूदा फ़ाइल कम से कम 24 घंटे तक नहीं छपी थी। कुछ भी जो पिछले 24 घंटों में संशोधित किया गया था, इसलिए जिप्फ़ाइल से रद्दी है।
$ find . -mtime -1 -print0 | xargs -0 rm
यह कुछ निर्देशिकाओं को भी ढूंढेगा, लेकिन rm
उन्हें अकेला छोड़ देगा। उन्हें एक दूसरे पास से निपटाया जा सकता है:
$ find . -mtime 1 -type d -print 0 | xargs -0 rmdir
हाल ही में संशोधित किए गए किसी भी निर्देशिका को ज़िप द्वारा संशोधित किया गया था। यदि rmdir
सफलतापूर्वक उन्हें हटा दिया जाता है, तो इसका मतलब है कि वे खाली हैं। खाली निर्देशिकाओं को जो ज़िप द्वारा छुआ गया था, संभवतः इसके द्वारा बनाई गई थीं: अर्थात संग्रह से। हम 100% निश्चित नहीं हो सकते। यह संभव है कि अनज़िप नौकरी ने कुछ फ़ाइलों को एक मौजूदा निर्देशिका में डाल दिया जो कि खाली थी।
यदि find
24 घंटे की ग्रैन्युलैरिटी नौकरी के लिए पर्याप्त नहीं है, क्योंकि पेड़ की फाइलों को हाल ही में संशोधित किया गया था, तो मैं अगले कुछ सरल पर विचार करूंगा: मान लीजिए कि अनज़िप नौकरी ने मौजूदा उपनिर्देशिकाओं में कुछ भी नहीं डाला। यह कहना है, जो कुछ भी अनज़िप किया गया था वह या तो शीर्ष स्तर पर एक फ़ाइल है, या एक नया उपनिर्देशिका जो पहले नहीं था, इसलिए इसमें ज़िप से सामग्री के अलावा कुछ भी नहीं है। फिर:
# list directory in descending order of modification time
$ ls -1t > filelist # descending order of modification time
अब हम filelist
एक पाठ संपादक में खोलते हैं , और सूची में पहली प्रविष्टि निर्धारित करते हैं जो ज़िप से नहीं आई थी। हम उस प्रविष्टि और उसके बाद की सभी चीजों को हटा देते हैं। क्या अवशेष फाइलें और निर्देशिकाएं हैं जो ज़िप से आई हैं। सबसे पहले हम नामों में रिक्त स्थान जैसे मुद्दों के लिए नेत्रहीन निरीक्षण करते हैं, और उद्धरणों की घटनाओं से बचते हैं, जिन्हें बचने की आवश्यकता होती है। यदि आवश्यक हो तो हम सब कुछ के आसपास उद्धरण जोड़ सकते हैं: निम्नलिखित मानता है कि आप विम का उपयोग करते हैं:
:%s/.*/"&"/
फिर इसे एक बड़ी लाइन में शामिल करें:
:%j
अब rm -rf
इसके सामने डालें :
Irm - rf<ESC>
एक शेल कमांड के रूप में कर्सर के नीचे लाइन को चलाएं:
!!sh<Enter>
निश्चित रूप से, मैं इस कार्य के चरणों को स्वचालित नहीं करूंगा, जो पहले से ही मौजूद फ़ाइलों को मिटाने या फ़ाइल नाम के मुद्दों के कारण खराब होने के जोखिम के कारण है।
यदि आप ज़िप में रास्तों की एक सूची प्राप्त करने के स्पष्ट मार्ग पर जा रहे हैं, तो इसे एक फ़ाइल पर कब्जा कर लें, इसे बहुत सावधानी से देखें और किसी भी आवश्यक संपादन करने के बाद इसे हटाने में बदल दें।
lq
विकल्पों के बारे में पता नहीं थाunzizp
, मैंने सिर्फ उसके मुख्य उत्तर के आसपास कुछ क्लासिक * निक्स ट्रिक्स जोड़े।