Mac OS X'te bir dosyadaki “genişletilmiş öznitelikleri” nasıl kaldırabilirim?


260

Stres testi çalıştıran bir AppleScript komut dosyası var. Testin bir kısmı belirli dosyaları açmak, kaydetmek ve kapatmaktır. Her nasılsa, dosyalar dosyaların kaydedilmesini yasaklayan bazı "genişletilmiş öznitelikler" aldı. Bu, stres testinin başarısız olmasına neden olur.

Genişletilmiş öznitelikleri nasıl kaldırabilirim?


Genişletilmiş öznitelikler bir dosyanın kaydedilmesini engelleyemez. Bunun bir izin sorunu veya ACL olmadığından emin misiniz?
Lily Ballard

10.7.3 sürümüne geçtiniz mi? Görünüşe göre birçok GUI uygulamasının (TextEdit dahil, ancak diğer uygulamaların - kendim yazdığım biri dahil, garip bir şey yapmayan) artık dosyalar üzerinde karantina bitini ayarlayacağı bir hata var. @Bavarious'un dediği gibi, @ xattr @ kullanarak kaldırabilirsiniz. Ücretsiz olan TextWrangler'a bakın ve bence iyi bir AppleScript desteği var. Bana karantina bitini ayarlamadığı söylendi.
Abhi Beckert

6
Aşağıdakiler işe yaradıysa, cevabı kabul etmelisiniz - bu web sitesini iyi bir bilgi tabanı haline getirmeye yardımcı olur :-)
Graza

Yanıtlar:


392

xattrKomutu kullanın . Genişletilmiş özellikleri inceleyebilirsiniz:

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

ve -dbir genişletilmiş özelliği silme seçeneğini kullanın:

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

-ctüm genişletilmiş özellikleri kaldırmak için de bu seçeneği kullanabilirsiniz :

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

xattr -hsize komut satırı seçeneklerini gösterir ve xattr'in bir man sayfası vardır .


2
Apple'ın çevrimiçi olarak kullanabileceği bir adam sayfası var: developer.apple.com/documentation/Darwin/Reference/ManPages/…
Quinn Taylor

Görünüşe göre -c seçeneği Mountain Lion'da (10.8) kaldırıldı. xattr -h artık -c'yi listelemez ve kullanıldığında "-c tanınmadı" oluşturur. Genişletilmiş özellikleri tek tek kaldırmak artık çok acı verici.
helioz

1
-cbenim için çalışmıyor (OS X 10.6.8). -dAyrıca şikayet etmedi rağmen herhangi bir etkisi yoktu. Açıkça her genişletilmiş özniteliği şöyle adlandırmak zorunda kaldı: xattr -rd <attrname> <folder/file>(özyinelemeli siler). Mevcut öznitelikleri bulmak için (büyük olasılıkla tüm dizin ağacındaki öznitelikler) xattr <dir/file>yukarıdaki cevaptaki gibi kullanın.
düşünce balonu

mindtheif burada xCode komut satırı araçları gerektirdiğini kimse belirtmedi. 10.6.8'de buna farklı bir şey denir. İşte GitHub'da önceden oluşturulmuş bir yükleyiciye bir bağlantı , bu yüzden sorunun olup olmadığını görmek için tüm xCode'u yüklemenize gerek yok.

5
10.8.5 sistemime Xcode yüklendiğinde, benim xattr -ciçin iyi çalışıyor (ve tüm meta verileri başarıyla çıkardı).
Doktor J

103

Tek Bir Dosyadaki Tek Bir Özelliğin Kaldırılması

Bavyeralılar'ın cevabına bakınız.


Tek Bir Dosyadaki Tüm Genişletilmiş Öznitelikleri Kaldırmak İçin

Nitelikleri "temizlemek" için bayrakla xattrbirlikte kullanın -c:

xattr -c yourfile.txt



Birçok Dosyadaki Tüm Genişletilmiş Öznitelikleri Kaldırmak İçin

Bir dizindeki tüm dosyalarda genişletilmiş öznitelikleri özyinelemeli olarak kaldırmak için -c"temizle" bayrağını -rözyinelemeli bayrakla birleştirin:

xattr -rc /path/to/directory



Mac OS X Kullanıcıları İçin Bir İpucu

Boşluklar veya özel karakterler içeren uzun bir yolunuz var mı?

Açık Terminal.appve yazmaya başlayın xattr -rc, sonunda bir boşluk içerir ve daha sonra Dosya veya klasörü sürükleyip Terminal.apppencere ve otomatik doğru kaçmalarına ile tam yolunu ekleyecektir.


1
-c OS X 10.5'te başarısız oluyor: option -c not recognized . Apple'ın PowerPC'sini test etmek için bir tane kullanıyoruz. Bu OS X desteklerin alt düzey versiyonu gibi görünüyor -l, -p, -wve -d.
jww

@cwd: Terminal'e Finder sürükle ve bırak özelliği . textClipping, apple.stackexchange.com/questions/301871/…
ccpizza

@jww Aşağıdaki cevabımda hatayı neden aldığınızı açıklıyorum. stackoverflow.com/a/58616002/1896134
JayRizzo

23

Kullanmayı deneyin:

xattr -rd com.apple.quarantine directoryname

Bu, sinir bozucu özniteliği her yerde tekrar tekrar kaldırmaya özen gösterir.


7

Başka bir özyinelemeli yaklaşım:

# 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 başarısız: option -c not recognized. Apple'ın PowerPC'sini test etmek için bir tane kullanıyoruz. Bu OS X desteklerin alt düzey versiyonu gibi görünüyor -l, -p, -wve -d.
jww

@jww Aşağıdaki cevabımda hatayı neden aldığınızı açıklıyorum. stackoverflow.com/a/58616002/1896134
JayRizzo

3

Yanıt (Bireysel Dosyalar)


1. Seçimde kullanılacak vitrin tuşları.

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. Silmek için bir Anahtar seçin.

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. Kaldırıldıklarını görmek için tuşları tekrar gösterin.

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

4. Son olarak, belirli bir dosya için TÜM tuşları KALDIRIN

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

Yanıtla (Dizindeki Tüm Dosyalar)


1. Seçimde kullanılacak vitrin tuşları.

xattr -r ~/Desktop

2. Bir dizindeki HER DOSYA için Belirli Bir Anahtarı kaldırın

xattr -rd com.apple.FinderInfo ~/Desktop

3. Bir dizindeki HER DOSYADAKİ TÜM anahtarları kaldırın

xattr -rc ~/Desktop

UYARI: Bunları sildiğinizde geri alamazsınız!
ARIZA HATASI: UNDO YOK.


Hatalar


Hatanın insanlarının aldığı sorunu ele almak istedim. Çünkü hatalar da beni deli ediyordu ... Python'a yüklerseniz Mac'te xattrortamınızın bir sorunu olabilir.

Mac bilgisayarımda iki farklı yol var xattr

type -a xattr

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

Yani -cxargs içinde çalışmayacak örneklerden birinde bash'da varsayılan olarak python olmayan versiyona sahip olmanızdır.

İle çalışır -c

/usr/bin/xattr -c

İle çalışmaz -c

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

Kabuğum / Terminal varsayılan olarak / usr / local / bin / xattr olarak ayarlanmıştır, çünkü $PATH /usr/local/bin:daha önce /usr/bin:varsayılan olduğuna inanıyorum.

Bunu kanıtlayabilirim, çünkü python'u kaldırmaya çalışırsanız xattrgöreceksiniz:

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)?

Geçici Çözümler


option -c not recognizedHataları Düzeltmek için .

  1. Sahip xattrolabileceğiniz herhangi bir Python'u kaldırın :pip3 uninstall xattr
  2. Tüm Terminalpencereleri kapat ve çıkTerminal
  3. Yeni bir yeniden aç Terminal pencereyi yeniden .
  4. ReRun xattrkomuta ve şimdi çalışmalıdır.

VEYA

Python'u korumak istiyorsanız şunu xattrkullanın:

/usr/bin/xattr

içindeki tüm Shellkomutlar içinTerminal


Misal:


Python'un sürümü xattrresimlerle hiç ilgilenmiyor:

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

Man Sayfaları

OSX xattr için MAN PAGE

Python xattr SÜRÜM İÇİN MAN SAYFA 0.6.4

NOT: Ben could şimdiki VERSION 0.9.6 için piton yardım sayfasını bulmak

Okuduğunuz için teşekkürler!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.