我将大量只读文件从 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/
也可以。
答案2
如果您想搜索整个目录并解锁所有文件,这将很有帮助。
在终端中cd
进入目录
此命令将查找并打印一份清单。
$ find . -flags uchg
此命令解锁它们。
$ find . -flags uchg -exec chflags nouchg {} \;
运行第二条命令后,您可以使用第一条命令仔细检查所有文件是否都已解锁,瞧!
答案3
您也可以使用SetFile -a l
,尽管它的功能与以下内容相同chflags nouchg
:
SetFile -a l file.ext
-a l
取消设置锁定属性的位。您可以通过从 Xcode 的偏好设置或从developer.apple.com/downloads。
答案4
实际上,可以在文件上设置两个锁定标志:uchg
和schg
。设置了标志的文件uchg
对于普通用户来说是不可改变的,但对于系统来说是可改变的。设置了标志的文件schg
对于任何人都是不可变的。两个标志可以同时设置。
要查看文件上设置了哪些标志,请使用
ls -lO FILE
那是一个大写字母 o,而不是零。
要彻底解锁文件,你必须执行
chflags nouchg,noschg FILE
好像两个标志都设置了并且你只删除其中一个,它仍然会被锁定。