Блог Олега Сердюкова

Снятие блокировки файла в терминале

Сегодня получил письмо от Algor‘а с интересным вопросом:

Разбирая архив на CD и DVD с фотографиями, я скопировал их все на жесткий диск. Воспользовавшись программой Tidy Up!, обнаружил массу дубликатов. Ну думаю, сейчас я их. Удалю. Да вот ничего подобного. На попытку переместить все выбранные файлы в корзину программа отвечает отказом удалить некоторые файлы в связи с тем, что они (файлы) залочены. Копировались с CD и DVD со всеми их свойствами. И это в самых разных директориях и поддиректориях. Интерфейс Tidy Up! не предусматривает пакетную разлочку таких файлов, средствами Mac OS X тоже сделать ничего не удалось. Может напишешь команду в терминале как разлочить все файлы в данном директории включая все поддиректории?

Речь шла о блокировке, которую в том числе можно сделать в Finder Get Info:

В процессе поиска решения нашёл документ Apple KB с главой ”Advanced tip about deleting locked files”.

Блокировка файла в Finder обозначает установку флага uchg, также известного как “immutable flag”. Если файл заблокирован, то его нельзя удалить или изменить:

$ rm testfile.txt
override rw-r--r--  ctrld/staff uchg for testfile.txt? y
rm: testfile.txt: Operation not permitted

$ date > testfile.txt
-bash: testfile.txt: Operation not permitted

Снять флаг можно в консоли командой chflags:

$ chflags nouchg testfile.txt

Если вам нужно проделать эту операцию для большого каталога и его содержимого, то нужно использовать ключ “-R”:

$ chflags -R nouchg bigdirectory

Ключи ls для просмотра флагов:

$ ls -lO testfile.txt
-rw-r--r--  1 ctrld  staff  uchg 0 Mar 25 10:27 testfile.txt

Comments