Làm cách nào để xóa các thuộc tính mở rộng của Wikipedia trên một tệp trong Mac OS X?


260

Tôi có một tập lệnh AppleScript chạy thử nghiệm căng thẳng. Một phần của bài kiểm tra là mở, lưu và đóng một số tệp nhất định. Bằng cách nào đó, các tệp đã chọn một số "thuộc tính mở rộng" cấm các tệp được lưu. Điều đó khiến bài kiểm tra căng thẳng thất bại.

Làm cách nào để xóa các thuộc tính mở rộng?


Thuộc tính mở rộng không thể ngăn chặn một tập tin được lưu. Bạn có chắc chắn đó không phải là vấn đề về quyền hay ACL?
Lily Ballard

Bạn vừa nâng cấp lên 10.7.3? Dường như có một lỗi trong đó nhiều ứng dụng GUI (bao gồm TextEdit, nhưng cũng có các ứng dụng khác - bao gồm cả ứng dụng tôi tự viết mà không làm gì lạ) giờ sẽ đặt bit cách ly trên các tệp. Như @Bavarious đã nói, bạn có thể xóa nó bằng cách sử dụng @ xattr @. Nhìn vào TextWrangler, miễn phí và tôi nghĩ có hỗ trợ AppleScript tốt. Tôi được bảo là nó không thiết lập bit cách ly.
Abhi Beckert

6
Nếu cách dưới đây hiệu quả, bạn nên chấp nhận câu trả lời - nó giúp biến trang web này thành một nền tảng kiến ​​thức tốt :-)
Graza

Câu trả lời:


392

Sử dụng xattrlệnh. Bạn có thể kiểm tra các thuộc tính mở rộng:

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

và sử dụng -dtùy chọn để xóa một thuộc tính mở rộng:

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

bạn cũng có thể sử dụng -ctùy chọn để xóa tất cả các thuộc tính mở rộng:

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

xattr -hsẽ hiển thị cho bạn các tùy chọn dòng lệnh và xattr có trang man .


2
Apple có một trang dành cho người dùng có sẵn trực tuyến: developer.apple.com/documentation/Darwin/Reference/ManPages/
Kẻ

Có vẻ như tùy chọn -c đã bị xóa trong Mountain Lion (10.8). xattr -h không còn liệt kê -c và tạo "-c không được nhận dạng" khi sử dụng. Bây giờ rất đau đớn để loại bỏ các thuộc tính mở rộng từng cái một.
helioz

1
-ckhông hoạt động đối với tôi (OS X 10.6.8). -dcũng không có bất kỳ ảnh hưởng nào mặc dù nó không phàn nàn. Tôi đã phải đặt tên rõ ràng cho từng thuộc tính mở rộng như vậy: xattr -rd <attrname> <folder/file>(xóa đệ quy). Để tìm ra các thuộc tính hiện tại (có thể là các thuộc tính giống nhau trong toàn bộ cây thư mục) sử dụng xattr <dir/file>như trong câu trả lời ở trên.
trí

@mindtheif không ai đề cập ở đây rằng điều này đòi hỏi các công cụ dòng lệnh xCode. Vào ngày 10.6.8, nó được gọi là một cái gì đó khác nhau. Đây là một liên kết đến trình cài đặt dựng sẵn trên GitHub để bạn không phải cài đặt tất cả xCode để xem đây có phải là sự cố của bạn không.

5
Với Xcode được cài đặt trên hệ thống 10.8.5 của tôi, xattr -choạt động tốt với tôi (và đã loại bỏ thành công tất cả siêu dữ liệu).
Doktor J

103

Xóa một thuộc tính trên một tệp

Xem câu trả lời của Bavarious.


Để xóa tất cả các thuộc tính mở rộng trên một tệp

Sử dụng xattrvới -ccờ để "xóa" các thuộc tính:

xattr -c yourfile.txt



Để xóa tất cả các thuộc tính mở rộng trên nhiều tệp

Để loại bỏ đệ quy các thuộc tính mở rộng trên tất cả các tệp trong một thư mục, hãy kết hợp -ccờ "xóa" với -rcờ đệ quy:

xattr -rc /path/to/directory



Mẹo dành cho người dùng Mac OS X

Có một con đường dài với không gian hoặc các ký tự đặc biệt?

Mở Terminal.appvà bắt đầu nhập xattr -rc, bao gồm một khoảng trắng ở đuôi, sau đó kéo tệp hoặc thư mục vào Terminal.appcửa sổ và nó sẽ tự động thêm đường dẫn đầy đủ với lối thoát thích hợp.


1
-ckhông thành công trên OS X 10.5 : option -c not recognized. Chúng tôi sử dụng một để thử nghiệm trên PowerPC của Apple. Dường như các phiên bản downlevel của OS X hỗ trợ -l, -p, -w-d.
ngày

@cwd: Trình tìm kiếm kéo thả vào thiết bị đầu cuối không hoạt động với một số tệp Finder 'đặc biệt' . textClippingnhư được mô tả trong apple.stackexchange.com/questions/301871/
ccpizza

@jww Tôi giải thích lý do tại sao bạn nhận được lỗi trong câu trả lời của tôi dưới đây. stackoverflow.com/a/58616002/1896134
JayRizzo

23

Hãy thử sử dụng:

xattr -rd com.apple.quarantine directoryname

Điều này quan tâm đến việc loại bỏ đệ quy thuộc tính pesky ở mọi nơi.


7

Một cách tiếp cận đệ quy khác:

# 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

-ckhông thành công trên OS X 10.5 : option -c not recognized. Chúng tôi sử dụng một để thử nghiệm trên PowerPC của Apple. Dường như các phiên bản downlevel của OS X hỗ trợ -l, -p, -w-d.
ngày

@jww Tôi giải thích lý do tại sao bạn nhận được lỗi trong câu trả lời của tôi dưới đây. stackoverflow.com/a/58616002/1896134
JayRizzo

3

Trả lời (Tệp cá nhân)


1. Hiển thị các phím để sử dụng trong lựa chọn.

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. Chọn một khóa để xóa.

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. Hiển thị các phím một lần nữa để xem chúng đã bị xóa.

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

4. Cuối cùng, XÓA TẤT CẢ các phím cho một tệp cụ thể

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

Trả lời (Tất cả các tệp trong một thư mục)


1. Hiển thị các phím để sử dụng trong lựa chọn.

xattr -r ~/Desktop

2. Xóa một khóa cụ thể cho MỌI FILE trong một thư mục

xattr -rd com.apple.FinderInfo ~/Desktop

3. Xóa TẤT CẢ các phím trên MỌI FILE trong một thư mục

xattr -rc ~/Desktop

CẢNH BÁO: Khi bạn xóa những thứ này, bạn KHÔNG lấy lại chúng!
FAULT ERROR: KHÔNG CÓ UNDO.


Lỗi


Tôi muốn giải quyết lỗi của mọi người. Bởi vì các lỗi cũng khiến tôi phát điên ... Trên máy mac nếu bạn cài đặt xattrbằng python, thì môi trường của bạn có thể có vấn đề.

Có hai đường dẫn khác nhau trên máy Mac của tôi cho xattr

type -a xattr

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

Vì vậy, trong một trong những ví dụ, nơi -csẽ không hoạt động trong xargs là vì trong bash, bạn mặc định là phiên bản không phải python.

Làm việc với -c

/usr/bin/xattr -c

KHÔNG làm việc với -c

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

Shell / Terminal của tôi mặc định là / usr / local / bin / xattr bởi vì $PATH /usr/local/bin:trước /usr/bin:đây tôi tin là mặc định.

Tôi có thể chứng minh điều này bởi vì, nếu bạn cố gắng gỡ cài đặt con trăn, xattrbạn sẽ thấy:

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

Cách giải quyết


Để sửa option -c not recognizedlỗi.

  1. Gỡ cài đặt bất kỳ Python nào xattrbạn có thể có:pip3 uninstall xattr
  2. Đóng tất cả các Terminalcửa sổ và thoátTerminal
  3. Mở lại một Terminalcửa sổ mới .
  4. xattrLệnh ReRun và nó sẽ hoạt động.

HOẶC LÀ

Nếu bạn muốn giữ Python xattrthì hãy sử dụng

/usr/bin/xattr

cho bất kỳ Shelllệnh nào trongTerminal


Thí dụ:


Phiên bản Python xattrkhông xử lý hình ảnh nào cả:

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

Trang nam

TRANG MAN cho OSX xattr

TRANG MAN cho Python xattr PHIÊN BẢN 0.6.4

LƯU Ý: Tôi không thể tìm thấy trang trợ giúp python cho VERSION 0.9.6 hiện tại

Cảm ơn vì đã đọc!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.