在OS X上解锁“锁定”文件的命令


96

我从Windows系统将许多只读文件复制到了Mac。使用“获取信息”查看每个文件的信息时,我可以看到它们已锁定。我正在编写一个bash脚本以复制某些文件,但出现一个错误消息,提示“不允许操作”。因此,首先,我需要解锁文件。由于我经常从Windows系统提取文件,因此我希望我的脚本解锁这些文件。

在OSX上解锁“锁定”文件的终端命令是什么?

Answers:


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 -在Mac OS X上解锁文件
Michael Prescott

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查看Mac系统flags上的文件。注意macOS' ls'命令的完整路径。如果您安装了GNU Coreutils,这是必需的。
托尼·巴尔甘斯基

15

您也可以使用SetFile -a l,即使它具有以下功能chflags nouchg

SetFile -a l file.ext

-a l取消设置锁定属性的位。您可以通过从Xcode的首选项或developer.apple.com/downloads下载命令行工具包来安装SetFile 。


这是在macOS Sierra上对我有用的方法,其中包含从Windows机器复制的一些文件。我用过:SetFile -al〜/ Documents / Arduino / Samples / *
callisto

14

如果要搜索整个目录并解锁所有文件,这将很有帮助。

在终端cd到目录

该命令查找并打印它们的列表

$ find . -flags uchg

此命令将它们解锁

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

您可以在运行第二个命令voilà之后使用第一个命令仔细检查所有文件是否都已解锁。


1
尽管此方法有效,但是对于大量文件而言,这可能会非常慢,因为它会为每个文件启动一个新进程。
理查德·韦特

0

实际上,可以在文件上设置两个锁定标志:uchgschguchg设置了标志的文件对于普通用户而言是不可变的,但是对系统而言是可变的。schg设置了标志的文件对任何人都是不可变的。可以同时设置两个标志。

要查看在文件上设置了哪些标志,请使用

ls -lO FILE

那是一个大写字母o,而不是零。

要绝对解锁文件,您必须执行

chflags nouchg,noschg FILE

好像两个标志都被设置,而您仅删除了其中一个,它仍将被锁定。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.