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

Mic*_*ott 124 file-attributes command-line macos

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

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

Che*_*ion 172

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

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
Run Code Online (Sandbox Code Playgroud)
  • chflags = 更改文件/文件夹上的标志,例如“锁定”
  • -R = 递归或为所有内容并遵循指定目录中的目录
  • nouchg = 表示可以更改文件
  • /PATH/= 当然是您要更改的文件的路径。类似的东西: ~/Sites/mysite/directory/with/locked/files/也可以。

  • 还有另一个相关标志`schg`,它是系统不可变标志(参见https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/chflags.1.html)清除它的命令类似:`sudo chflags noschg PATH/TO/LOCKED/FILE` (4认同)

小智 21

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

在终端cd到目录

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

$ find . -flags uchg
Run Code Online (Sandbox Code Playgroud)

此命令解锁它们

$ find . -flags uchg -exec chflags nouchg {} \;
Run Code Online (Sandbox Code Playgroud)

您可以使用第一个命令在运行第二个命令后再次检查所有文件是否已解锁,瞧!


Joh*_*n T 15

您也可以使用SetFile -a l,即使它的作用与chflags nouchg

SetFile -a l file.ext
Run Code Online (Sandbox Code Playgroud)

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


Mec*_*cki 7

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

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

ls -lO FILE
Run Code Online (Sandbox Code Playgroud)

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

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

chflags nouchg,noschg FILE
Run Code Online (Sandbox Code Playgroud)

就像设置了两个标志并且您只删除其中一个标志一样,它仍然会被锁定。