Lệnh mở khóa các tập tin đã bị khóa trên OS X


96

Tôi đã sao chép rất nhiều tệp chỉ đọc từ hệ thống Windows sang máy Mac. Khi xem Thông tin cho mỗi tệp bằng cách sử dụng "Nhận thông tin", tôi có thể thấy chúng bị khóa. Tôi đang viết một tập lệnh bash để sao chép một số tệp và tôi gặp lỗi "Hoạt động không được phép" Vì vậy, trước tiên tôi cần mở khóa các tệp. Vì tôi sẽ thường xuyên lấy các tệp từ hệ thống Windows, tôi muốn tập lệnh của mình mở khóa các tệp này.

Lệnh terminal để mở khóa các tệp "Đã khóa" trên OSX là gì?

Câu trả lời:


136

Để mở khóa tập tin, bạn có thể sử dụng:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = thay đổi cờ trên tệp / thư mục, chẳng hạn như "bị khóa"
  • -R = đệ quy hoặc cho tất cả mọi thứ và theo dõi các thư mục trong thư mục được chỉ định
  • nouchg = có nghĩa là tập tin có thể được thay đổi
  • /PATH/= tất nhiên là đường dẫn đến các tệp bạn muốn thay đổi. Một cái gì đó như: ~/Sites/mysite/directory/with/locked/files/hoạt động là tốt.

1
Có vẻ như tôi đã tìm thấy giải pháp giống như bạn đang trả lời. Tôi cũng học được rằng -R là dành cho đệ quy. Vì vậy, để mở khóa tất cả các tệp trong thư mục hiện tại, hãy sử dụng <br/> chflags nochg * <br/> và để thay đổi chỉ một tệp <br/> chflags nouchg onefile.txt Xem: mehtanirav.com/2009/04/16/recursively -unlock-files-on-mac-os-x
Michael Prescott

3
Có một cờ khác có liên quan schglà cờ bất biến của hệ thống (xem developer.apple.com/l sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge

1
Sử dụng /bin/ls -lO /path/to/fileđể xem macOS flagstrên các tập tin. Lưu ý đường dẫn đầy đủ đến lệnh macOS ' ls'. Điều này là cần thiết nếu bạn đã cài đặt GNU Coreutils.
Tony Barganski

15

Bạn cũng có thể sử dụng SetFile -a l, mặc dù nó làm điều tương tự như chflags nouchg:

SetFile -a l file.ext

-a lbỏ cài đặt bit cho thuộc tính bị khóa. Bạn có thể cài đặt SetFile bằng cách tải xuống gói Công cụ dòng lệnh từ tùy chọn của Xcode hoặc từ developer.apple.com/doads .


Đây là phương pháp phù hợp với tôi trên macOS Sierra với một vài tệp được sao chép từ máy Windows. Tôi đã sử dụng: SetFile -al ~ / Documents / Arduino / Samples / *
callisto

14

Điều này rất hữu ích nếu bạn muốn tìm kiếm toàn bộ thư mục và mở khóa tất cả các tệp.

Trong thiết bị đầu cuối cdvào thư mục

Lệnh này tìm và sẽ in một danh sách của chúng .

$ find . -flags uchg

Lệnh này mở khóa chúng .

$ find . -flags uchg -exec chflags nouchg {} \;

Bạn có thể sử dụng lệnh đầu tiên để kiểm tra lại xem tất cả các tệp đã được mở khóa sau khi chạy lệnh thứ hai, voilà!


1
Trong khi điều này hoạt động, nó có thể cực kỳ chậm đối với số lượng lớn tệp vì nó bắt đầu một quy trình mới cho mỗi tệp.
Richard Waite

0

Thực tế, có hai cờ khóa có thể được đặt trên một tệp: uchgschg. Một tập tin có bộ uchgcờ là bất biến đối với người dùng bình thường nhưng nó có thể thay đổi bởi hệ thống. Một tập tin có bộ schgcờ là bất biến bởi bất cứ ai. Cả hai cờ có thể được đặt cùng một lúc.

Để xem cờ nào được đặt trên một tệp, sử dụng

ls -lO FILE

Đó là chữ in hoa o, không phải không.

Để chắc chắn mở khóa một tập tin, bạn sẽ phải thực thi

chflags nouchg,noschg FILE

như thể cả hai cờ đã được đặt và bạn chỉ xóa một trong số chúng, nó sẽ vẫn bị khóa.

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.