Команда для розблокування файлів "Заблоковані" в OS X


96

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

Що таке термінальна команда для розблокування "заблокованих" файлів на OSX?

Відповіді:


136

Для розблокування файлів ви можете використовувати:

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

1
Схоже, я знайшов рішення саме так, як ви відповідали. Я також дізнався, що -R призначений для рекурсивного. Отже, для розблокування всіх файлів у поточному каталозі використовуйте <br/> chflags nochg * <br/> та змініть лише один файл <br/> chflags nouchg onefile.txt Див.: Mehtanirav.com/2009/04/16/recursively -unlock-files-on-mac-os-x
Майкл Прескотт,

3
Є ще один відповідний прапор schg- це системний прапор, що не змінюється (див. Developer.apple.com/library/mac/documentation/Darwin/Reference/… ) Команда очистити його схожа:sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge

1
Використовуйте /bin/ls -lO /path/to/fileдля перегляду macOS flagsу файлах. Зауважте повний шлях до команди macOS ' ls'. Це потрібно, якщо у вас встановлено GNU Coreutils.
Тоні Барганскі

15

Ви також можете використовувати SetFile -a l, хоча це робить те саме, що chflags nouchg:

SetFile -a l file.ext

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


Це метод, який працював для мене на macOS Sierra з кількома файлами, скопійованими з машини Windows. Я використовував: SetFile -al ~ / Документи / Arduino / Зразки / *
callisto

14

Це корисно, якщо ви хочете шукати весь каталог та розблокувати всі файли.

У терміналі cdдо каталогу

Ця команда знаходить і надрукує їх список .

$ find . -flags uchg

Ця команда їх розблоковує .

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

Ви можете скористатися першою командою, щоб перевірити, чи всі файли розблоковані після виконання другої команди, voilà!


1
Хоча це працює, це може бути дуже повільним для великої кількості файлів, оскільки він запускає новий процес для кожного файлу.
Річард Уейт

0

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

Щоб побачити, які прапори встановлені у файлі, використовуйте

ls -lO FILE

Це велика літера о, а не нуль.

Щоб точно розблокувати файл, вам доведеться виконати

chflags nouchg,noschg FILE

як би встановлені обидва прапори, і ви видалите лише один з них, він все одно буде заблокований.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.