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

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

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

4 ответа

Решение

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

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = поменять флаги на файлах / папках, например "заблокирован"
  • -R = рекурсивно или для всего и следовать каталогам в указанном каталоге
  • nouchg = означает, что файл можно изменить
  • /PATH/ = конечно это путь к файлам, которые вы хотите изменить. Что-то вроде: ~/Sites/mysite/directory/with/locked/files/ работает так же.

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

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

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

$ find . -flags uchg

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

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

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

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

SetFile -a l file.ext

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

На самом деле для файла можно установить два флага блокировки: uchg а также schg, Файл, который имеет uchg набор флагов является неизменным для обычных пользователей, но он может изменяться системой. Файл, который имеет schg набор флагов является неизменным для всех. Оба флага могут быть установлены одновременно.

Чтобы увидеть, какие флаги установлены в файле, используйте

ls -lO FILE

Это заглавная буква o, а не ноль.

Чтобы однозначно разблокировать файл, вам нужно выполнить

chflags nouchg,noschg FILE

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

Другие вопросы по тегам