उन pesky ".DS_Store" फ़ाइलों को हटा दें


13

यदि आप OS X का उपयोग करते हैं तो आप कुख्यात छिपी ".DS_Store" फाइलों से परिचित हो सकते हैं जो फाइंडर का उपयोग करने के परिणामस्वरूप उत्पन्न होती हैं।

चुनौती कोड लिखने की है जो संपूर्ण फ़ाइल सिस्टम से गुजरती है और ".DS_Store" नामक किसी भी फ़ाइल को हटा देती है।

क्लासिक कोड गोल्फ - सबसे छोटा कोड जीतता है।


स्पष्टीकरण:

  • कोड को किसी भी .DS_Store फाइल को हटाने की जरूरत नहीं है, जिसमें सुपरयुसर की आवश्यकता होती है; मान लें कि ऐसी कोई फ़ाइल मौजूद नहीं है।

  • कोड को केवल संबंधित .DS_Store फ़ाइलों को हटाना चाहिए और कुछ नहीं।


3
क्या कोड को हटाने की आवश्यकता है .DS_Store फाइलें जिन्हें सुपरयुसर की आवश्यकता होती है (क्या मुझे sudo को आह्वान करने की आवश्यकता है)?
काया

1
@ केक अच्छा सवाल: नहीं, ऐसी फाइलों को हटाने की जरूरत नहीं है।
अर्शजी

27
यह नाम नहीं फ़ाइलों को हटाने के लिए ठीक है .DS_Storeभी ?
जॉय एडम्स

1
@JohannesKuhn नवीनतम संपादन स्व-स्पष्ट होना चाहिए था, मैं मानूंगा। मैंने इसे संपूर्णता के लिए जोड़ा। लेकिन मैं चतुर जवाब की सराहना करता हूं, फिर भी!
अर्शजी

1
@Joey - सैन्य डोमेन में प्रश्न को स्थानांतरित करें - उदाहरण के लिए, हम्म ... संयुक्त राज्य अमेरिका की सेना, यादृच्छिक ^ ^ पर। और "फ़ाइल को" .DS_Store "" "व्यक्ति को मारने" के साथ बदलें। और आप देखेंगे कि आवश्यकता "केवल" स्पष्ट होने से दूर है।
निकोलस बारबुल्स्को

जवाबों:



12

बैश *, 40 30

find / -name .DS_Store -delete

find / -name .DS_Store -exec rm -f {} \;

यह इसे संभालना चाहिए (बहुत गोल्फ नहीं, नहीं। असाधारण रूप से धीमी गति से)। बैश सही लगता है क्योंकि हमें किसी भी "आयात प्रणाली" बकवास से निपटने की ज़रूरत नहीं है। यदि आप किसी भी वातावरण में निष्पादन की आवश्यकता चाहते हैं, तो bashलाइन फीड के लिए 4 और 1 के लिए चार चार्ट जोड़ें ।

* मुझे लगता है कि कोई भी शेल, बस इस आदत से बाहर नहीं निकल सकता है कि फिर से शेल केवल शेल है।


1
बैश उसके लिए बिल्कुल सही उपकरण है।
जोहान्स कुह्न

1
findओएस एक्स किस तरह का है? जीएनयू के साथ findभी कम है: find / -name .DS_Store -delete
मैनेटवर्क

1
के अधीन रहते हुए "तर्क सूची बहुत लंबा" त्रुटि और की आवश्यकता है या तो bash4 या नए globstarखोल विकल्प चालू, या zsh: rm /**/.DS_Store
प्रातः

1
आप कुछ भी विशिष्ट नहीं कर रहे हैं, इसलिए यह श के रूप में अच्छी तरह से किया जा सकता है।
पीटर टेलर

10
इसने मेरी .DS_Storeनिर्देशिका को हटा दिया जहां मेरे पास महत्वपूर्ण सामान था।
कोनराड बोरोस्की

9

रूबी: 38 33 अक्षर

File.delete *Dir['/**/.DS_Store']

2
Dir[...]के लिए एक शॉर्टकट है Dir.glob(...), यह आपको 5 चार्ट बचाएगा।
पैट्रिक ऑस्सिटी

3
अरे! मुझे पता था कि एक छोटा रास्ता है, लेकिन मैंने इसके लिए खोज की Kernel। साभार, @ पैपडे
मैनेटवर्क

2

मछली, १६

rm /**/.DS_Store

(यदि केवल-पढ़ने योग्य निर्देशिकाओं में -fहटाने के लिए आवश्यक है तो 19 बनाएं .DS_Store।)


0

खोल, २५

locate .DS_Store|xargs rm

locateडेटाबेस काम करने की आवश्यकता है।


3
इसके अलावा व्हाट्सएप पात्रों के बिना भी रास्ते की आवश्यकता होती है।
मैनटवर्क


0

सीएमडी, 17

del/s "/.DS_Store

बहुत सीधा।

/sउपनिर्देशिकाओं के भीतर भी खोज के लिए आवश्यक है।
"का उपयोग /चार से बचने के लिए किया जाता है जिसे अन्यथा एक (अमान्य) तर्क के रूप में व्याख्या किया जाएगा।


-1

मिल जाए, ३ 38

प्रीविअस findसॉल्यूशन सादा गलत है: इसका मतलब है .DS_Storeडायरेक्ट्री, लिंक, स्पेशल फाइल आदि नाम की हर चीज को डिलीट करना ।

परंतु:

find / -type f -name .DS_Store -delete

यह न्यूनतम समाधान का उपयोग कर रहा है find

अस्वीकरण : मैं वास्तव में एक वास्तविक * निक्स बॉक्स पर इस समाधान का उपयोग करने के खिलाफ दृढ़ता से सलाह देता हूं: कुछ पुनरावर्ती से हटाने की कोशिश करना /बहुत बुरा विचार है। आपको चेतावनी दी जाती है।

संपादित करें :

यदि पाइप, सॉकेट्स, विशेष फाइलें, छद्म फाइल सिस्टम नाम की फाइलें, निर्देशिका, लिंक (कठोर और प्रतीकात्मक) के बीच अंतर आपके लिए स्पष्ट नहीं है, तो मैं इस अज्ञात शब्दों में से कुछ को Google को सुझाव देता हूं। आप आश्चर्यचकित होंगे, समझदार और कम (भयावह) त्रुटियों से ग्रस्त होंगे।

EDIT2 : इससे भी अधिक प्रासंगिक: ओपी ने लिखा "कोड को केवल संबंधित .DS_Store फ़ाइलों को हटाना चाहिए और कुछ नहीं।" : इसलिए, यदि कोई उबाऊ आवश्यकताओं को पढ़ने के लिए परवाह करता है, तो सभी समाधान जो इस फाइल से अधिक को हटाते हैं, वह हास्यास्पद है, स्मार्ट, एक्ट। लेकिन गलत है


पिछला findसमाधान सही है। प्रश्न कहता है "किसी भी फ़ाइल को" .DS_Store "हटाएं"। तो फ़ाइल प्रकार के आधार पर कोई विशेष आवश्यकता नहीं है।
मैनटवर्क

@ manatwork: बकवास: एक फ़ाइल एक निर्देशिका से अलग बात है। अपनी मुड़ रेखा के साथ, सबसे अच्छा समाधान अभी भी rm
-rf

2
ओह, आपने Google नहीं किया: en.wikipedia.org/wiki/Everything_is_a_file
जोहान्स कुह्न

3
ओह, और एक अन्य बात: कोड गोल्फ में लक्ष्य सबसे कम समाधान प्राप्त करना है, इसलिए यदि आप अपने पक्ष में आवश्यकताओं को ठीक करते हुए कुछ चार्ट बचा सकते हैं, तो ठीक है, ऐसा ही हो। आप सब कुछ फ़ाइल के रूप में मानकर 8 वर्णों को बचा सकते हैं, जैसे कि यूनिक्स करता है। PS: आश्चर्य कहाँ था? तथ्य यह है कि कुछ लोग बुनियादी UNIX प्रिंसिप को अस्वीकार करते हैं?
जोहान्स कुह्न

1
अब मुझे एक बेहतर जवाब मिला , कुछ ऐसा जो यहां हर कोई समझ सकता है।
दावालपि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.