मैं मैक ओएस एक्स में एक फ़ाइल पर "विस्तारित विशेषताओं" को कैसे निकालूं?


260

मेरे पास AppleScript स्क्रिप्ट है जो एक तनाव परीक्षण चलाता है। परीक्षण का हिस्सा कुछ फाइलों को खोलना, सहेजना और बंद करना है। किसी तरह, फ़ाइलों ने कुछ "विस्तारित विशेषताओं" को उठाया है जो फ़ाइलों को सहेजे जाने से रोकते हैं। यह तनाव परीक्षण को विफल करने का कारण बनता है।

मैं विस्तारित विशेषताओं को कैसे निकालूं?


विस्तारित विशेषताएँ किसी फ़ाइल को सहेजने से नहीं रोक सकती हैं। क्या आप सुनिश्चित हैं कि यह अनुमतियाँ समस्या या ACL नहीं है?
लिली बॉलर

क्या आपने सिर्फ 10.7.3 में अपग्रेड किया था? ऐसा लगता है कि एक बग है जहां कई जीयूआई ऐप (टेक्स्टएडिट सहित, लेकिन अन्य ऐप भी शामिल हैं - जिनमें से एक मैंने खुद लिखा था जो कुछ भी अजीब नहीं है) अब फाइलों पर संगरोध बिट सेट करेगा। जैसा @Bavarious ने कहा, आप @ xattr @ का उपयोग करके इसे हटा सकते हैं। TextWrangler में देखें, जो मुफ़्त है, और मुझे लगता है कि इसमें AppleScript का अच्छा समर्थन है। मुझे बताया गया है कि यह संगरोध बिट सेट नहीं करता है।
अभि बेकर्ट

6
यदि नीचे काम किया गया है, तो आपको उत्तर को स्वीकार करना चाहिए - यह इस वेबसाइट को एक अच्छा ज्ञान-आधार बनाने में मदद करता है :-)
ग्रेजा

जवाबों:


392

xattrकमांड का उपयोग करें । आप विस्तारित विशेषताओं का निरीक्षण कर सकते हैं:

$ xattr s.7z
com.apple.metadata:kMDItemWhereFroms
com.apple.quarantine

और -dएक विस्तारित विशेषता को हटाने के लिए विकल्प का उपयोग करें :

$ xattr -d com.apple.quarantine s.7z
$ xattr s.7z
com.apple.metadata:kMDItemWhereFroms

आप -cसभी विस्तारित विशेषताओं को हटाने के लिए विकल्प का उपयोग कर सकते हैं :

$ xattr -c s.7z
$ xattr s.7z

xattr -hआपको कमांड लाइन विकल्प दिखाएगा, और xattr में एक मैन पेज होगा


2
Apple के पास इसके लिए एक ऑनलाइन पेज उपलब्ध है: developer.apple.com/documentation/Darwin/Reference/ManPages/…
Quinn Taylor

ऐसा प्रतीत होता है कि -c विकल्प को माउंटेन लायन (10.8) में हटा दिया गया था। xattr -h अब -c को सूचीबद्ध नहीं करता है और उपयोग किए जाने पर "-c पहचाना नहीं जाता" उत्पन्न करता है। एक के बाद एक विस्तारित विशेषताओं को हटाने के लिए बहुत दर्दनाक है।
हेलिओज

1
-cमेरे लिए काम नहीं कर रहा है (ओएस एक्स 10.6.8)। -dहालांकि इसका कोई प्रभाव नहीं पड़ा, हालांकि इसकी शिकायत नहीं हुई। मुझे स्पष्ट रूप से प्रत्येक विस्तारित विशेषता का नाम देना था: xattr -rd <attrname> <folder/file>(पुनरावर्ती हटाता है)। मौजूद विशेषताओं का पता लगाने के लिए (संभवत: संपूर्ण निर्देशिका ट्री में समान विशेषताएँ) xattr <dir/file>उपरोक्त उत्तर में उपयोग करें ।
दिमाग

@mindtheif ने यहां किसी का उल्लेख नहीं किया है कि इसके लिए xCode कमांड लाइन टूल्स की आवश्यकता है। 10.6.8 पर इसे कुछ अलग कहा जाता है। यहाँ GitHub पर एक पूर्व-निर्मित इंस्टॉलर का लिंक दिया गया है ताकि आपको यह देखने के लिए कि यह आपकी समस्या है, सभी xCode को स्थापित करने की आवश्यकता नहीं है।

5
मेरे 10.8.5 सिस्टम पर स्थापित Xcode के साथ, xattr -cमेरे लिए ठीक काम करता है (और सफलतापूर्वक सभी मेटाडेटा छीन लिया गया है)।
Doktor J

103

किसी एकल फ़ाइल पर एक एकल गुण निकालना

बावरियस का जवाब देखें।


एक फ़ाइल पर सभी विस्तारित गुण हटाने के लिए

विशेषताओं को "स्पष्ट" करने के xattrलिए -cध्वज के साथ उपयोग करें :

xattr -c yourfile.txt



कई फाइलों पर सभी विस्तारित विशेषताओं को हटाने के लिए

किसी निर्देशिका में सभी फ़ाइलों पर विस्तारित विशेषताओं को पुन: हटाने के लिए, पुनरावर्ती -cध्वज के साथ "स्पष्ट" ध्वज को संयोजित करें -r:

xattr -rc /path/to/directory



मैक ओएस एक्स उपयोगकर्ताओं के लिए एक टिप

रिक्त स्थान या विशेष वर्णों के साथ एक लंबा रास्ता है?

Terminal.appटाइप करना और खोलना xattr -rc, एक अनुगामी स्थान शामिल करना, और फिर फ़ाइल या फ़ोल्डर को Terminal.appखिड़की पर खींचें और यह स्वचालित रूप से उचित भागने के साथ पूर्ण पथ जोड़ देगा।


1
-cOS X 10.5 पर विफल रहता है option -c not recognized:। हम Apple के PowerPC पर परीक्षण के लिए एक का उपयोग करते हैं। यह ओएस एक्स का समर्थन करता है के निचले स्तर संस्करण की तरह लग रहा -l, -p, -wऔर -d
jww

@cwd: टर्मिनल में फाइंडर ड्रैग-एन-ड्रॉप कुछ 'विशेष' फाइंडर फ़ाइलों के साथ काम नहीं करता है, जैसे कि Apple.stackexchange.com/questions/301871/…. textClipping में वर्णित है
ccpizza 12-12-2017

@jww मैं समझाता हूं कि आपको मेरे उत्तर में त्रुटि क्यों मिली। stackoverflow.com/a/58616002/1896134
JayRizzo

23

प्रयोग करके देखें:

xattr -rd com.apple.quarantine directoryname

यह हर जगह pesky विशेषता को फिर से हटाने का ख्याल रखता है।


7

एक और पुनरावर्ती दृष्टिकोण:

# change directory to target folder:
cd /Volumes/path/to/folder

# find all things of type "f" (file), 
# then pipe "|" each result as an argument (xargs -0) 
# to the "xattr -c" command:
find . -type f -print0 | xargs -0 xattr -c

# Sometimes you may have to use a star * instead of the dot.
# The dot just means "here" (whereever your cd'd to
find * -type f -print0 | xargs -0 xattr -c

-cOS X 10.5 पर विफल रहता है option -c not recognized:। हम Apple के PowerPC पर परीक्षण के लिए एक का उपयोग करते हैं। यह ओएस एक्स का समर्थन करता है के निचले स्तर संस्करण की तरह लग रहा -l, -p, -wऔर -d
jww

@jww मैं समझाता हूं कि आपको मेरे उत्तर में त्रुटि क्यों मिली। stackoverflow.com/a/58616002/1896134
JayRizzo

3

उत्तर (व्यक्तिगत फ़ाइलें)


1. चयन में उपयोग के लिए शोकेस कीज।

xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.lastuseddate#PS
    # com.apple.metadata:kMDItemIsScreenCapture
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

2. हटाने के लिए एक कुंजी चुनें।

xattr -d com.apple.lastuseddate#PS ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
xattr -d kMDItemIsScreenCapture ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png

3. शोकेस कीज़ फिर से देखने के लिए उन्हें हटा दिया गया है।

xattr -l ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

4. अंत में, किसी विशेष फ़ाइल के लिए सभी कुंजियों को याद रखें

xattr -c ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png

उत्तर (सभी फाइलें एक निर्देशिका में)


1. चयन में उपयोग के लिए शोकेस कीज।

xattr -r ~/Desktop

2. एक निर्देशिका में हर फ़ाइल के लिए एक विशिष्ट कुंजी निकालें

xattr -rd com.apple.FinderInfo ~/Desktop

3. एक निर्देशिका में हर फाइल पर सभी चाबियाँ निकालें

xattr -rc ~/Desktop

चेतावनी: एक बार जब आप इन्हें हटा देते हैं तो आप उन्हें वापस नहीं लाते हैं!
FAULT EROR: कोई UNDO नहीं है।


त्रुटियाँ


मैं त्रुटि के लोगों को संबोधित कर रहा था। क्योंकि त्रुटियों ने मुझे पागल कर दिया है ... एक मैक पर यदि आप xattrअजगर में स्थापित करते हैं, तो आपके पर्यावरण में एक मुद्दा हो सकता है।

मेरे मैक पर दो अलग-अलग रास्ते हैं xattr

type -a xattr

    # xattr is /usr/local/bin/xattr    # PYTHON Installed Version
    # xattr is /usr/bin/xattr          # Mac OSX Installed Version

तो उदाहरण में से एक जहां -cxargs में काम नहीं करेगा, क्योंकि bash में आप गैर-पायथन संस्करण के लिए डिफ़ॉल्ट हैं।

के साथ काम करता है -c

/usr/bin/xattr -c

साथ काम नहीं करता है -c

/usr/local/bin/xattr -c
    # option -c not recognized

मेरा शेल / टर्मिनल डिफॉल्ट / usr / लोकल / बिन / xattr के लिए है क्योंकि मेरा $PATH /usr/local/bin:ऐसा है /usr/bin:जिसके बारे में मेरा मानना ​​है कि यह डिफ़ॉल्ट है।

मैं इसे साबित कर सकता हूं, क्योंकि यदि आप अजगर को अनइंस्टॉल करने की कोशिश xattrकरेंगे तो आप देखेंगे:

pip3 uninstall xattr
Uninstalling xattr-0.9.6:
  Would remove:
    /usr/local/bin/xattr
    /usr/local/lib/python3.7/site-packages/xattr-0.9.6.dist-info/*
    /usr/local/lib/python3.7/site-packages/xattr/*
Proceed (y/n)?

समाधान


option -c not recognizedत्रुटियों को ठीक करने के लिए ।

  1. xattrआपके पास किसी भी अजगर की स्थापना रद्द करें :pip3 uninstall xattr
  2. सभी Terminalविंडो बंद करें और छोड़ देंTerminal
  3. फिर से खोलना Terminal विंडो को फिर से ।
  4. ReRun xattrकमांड और इसे अब काम करना चाहिए।

या

अगर आप पाइथन रखना चाहते हैं xattrतो उपयोग करें

/usr/bin/xattr

में किसी भी Shellआदेश के लिएTerminal


उदाहरण:


पायथन का संस्करण xattrछवियों को बिल्कुल नहीं संभालता है:

Good-Mac:~ JayRizzo$ xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # Traceback (most recent call last):
    #   File "/usr/local/bin/xattr", line 8, in <module>
    #     sys.exit(main())
    #   File "/usr/local/lib/python3.7/site-packages/xattr/tool.py", line 196, in main
    #     attr_value = attr_value.decode('utf-8')
    # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 2: invalid start byte

Good-Mac:~ JayRizzo$ /usr/bin/xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.lastuseddate#PS
    # com.apple.metadata:kMDItemIsScreenCapture
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

मैन पेज

OSX xattr के लिए MAN पेज

पायथन xattr संस्करण 0.6.4 के लिए मैन पेज

नोट: मुझे वर्तमान संस्करण 0.9.6 के लिए अजगर सहायता पृष्ठ नहीं मिला

पढ़ने के लिए धन्यवाद!

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