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

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

#1 楼

要解锁文件,您可以使用:

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请参阅:mehtanirav.com/2009/04/16/recursively在Mac OS X上解锁文件

– Michael Prescott
2009年9月14日下午2:37

还有另一个相关的标志schg是系统不可变标志(请参阅developer.apple.com/library/mac/documentation/Darwin/Reference/…)。清除该命令的命令与此类似:sudo chflags noschg PATH / TO / LOCKED / FILE

–安迪·麦奇(Andy Madge)
15年1月12日在20:22

使用/ bin / ls -lO / path / to / file查看文件上的macOS标志。请注意macOS'ls'命令的完整路径。如果您安装了GNU Coreutils,这是必需的。

–托尼·巴尔甘斯基(Tony Barganski)
18年11月7日在5:57



#2 楼

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

$ find . -flags uchg


此命令将它们解锁。

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


您可以使用第一个命令仔细检查所有运行第二个命令voilà后,文件将被解锁!

评论


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

–Richard Waite
2014年8月23日23:52

我发现我必须使用+:find。 -flags + uchg甚至可以找到似乎只设置了一个标志uchg的文件。

–克里斯·卡罗尔(Chris F Carroll)
19年11月28日在13:05

#3 楼

您也可以使用SetFile -a l,即使它与chflags nouchg的作用相同:您可以通过从Xcode的首选项或从developer.apple.com/downloads下载命令行工具包来安装SetFile。

评论


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

– callisto
17年5月18日在6:59



#4 楼

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

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

ls -lO FILE


字母o,而不是零。

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

chflags nouchg,noschg FILE


就像设置了两个标志并且您仅删除其中之一,它仍将被锁定。