Команда для разблокировки «заблокированных» файлов на OS X

139846
Michael Prescott

Я скопировал много файлов только для чтения из системы Windows на мой Mac. При просмотре информации для каждого файла с помощью «Получить информацию», я вижу, что они заблокированы. Я пишу сценарий bash для копирования некоторых файлов и получаю сообщение об ошибке «Операция не разрешена». Итак, сначала мне нужно разблокировать файлы. Поскольку я буду часто извлекать файлы из системы Windows, я хочу, чтобы мой скрипт разблокировал эти файлы.

Что такое команда терминала для разблокировки «заблокированных» файлов в OSX?

83

3 ответа на вопрос

122
Chealion

Для разблокировки файлов вы можете использовать:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/ 
  • chflags = поменять флаги на файлах / папках, например "заблокирован"
  • -R = рекурсивный или для всего и следовать каталогам в указанном каталоге
  • nouchg = означает, что файл может быть изменен
  • /PATH/= конечно это путь к файлам, которые вы хотите изменить. Нечто подобное: ~/Sites/mysite/directory/with/locked/files/работает также.
Похоже, я нашел решение так же, как вы отвечали. Я также узнал, что -R для рекурсивного. Итак, чтобы разблокировать все файлы в текущем каталоге, используйте
chflags nochg *
и измените только один файл.
Chflags nouchg onefile.txt См .: http://www.mehtanirav.com/2009/04/16/recursively-unlock-files-on. -Mac OS X Michael Prescott 14 лет назад 1
Есть еще один соответствующий флаг `schg`, который является системным неизменяемым флагом (см. Https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/chflags.1.html) Команда для его очистки. аналогично: `sudo chflags noschg PATH / TO / LOCKED / FILE` Andy Madge 9 лет назад 1
Используйте `` `/ bin / ls -lO / path / to / file``` для просмотра macOS` `` flags``` на файлах. Обратите внимание на полный путь к команде macOS '`` `ls```'. Это необходимо, если у вас установлен GNU Coreutils. Tony Barganski 5 лет назад 0
15
John T

Вы также можете использовать SetFile -a l, хотя он делает то же самое, что и chflags nouchg:

SetFile -a l file.ext 

-a lсбрасывает бит для заблокированного атрибута. Вы можете установить SetFile, загрузив пакет инструментов командной строки из настроек XCode или по адресу developer.apple.com/downloads .

Это метод, который работал для меня на MacOS Sierra с несколькими файлами, скопированными с компьютера с Windows. Я использовал: SetFile -al ~ / Documents / Arduino / Samples / * callisto 6 лет назад 0
12
Mamie McCall

Это полезно, если вы хотите выполнить поиск по всему каталогу и разблокировать все файлы.

В терминале cdк каталогу

Эта команда находит и распечатывает их список .

$ find . -flags uchg 

Эта команда разблокирует их .

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

Вы можете использовать первую команду для двойной проверки того, что все файлы разблокированы после выполнения второй команды, вуаля!

Хотя это работает, оно может быть очень медленным для большого количества файлов, поскольку запускает новый процесс для каждого файла. Richard Waite 9 лет назад 1