在mac中使用shell命令递归更改文件和文件夹的权限
Posted
技术标签:
【中文标题】在mac中使用shell命令递归更改文件和文件夹的权限【英文标题】:changing permission for files and folder recursively using shell command in mac 【发布时间】:2011-04-19 13:41:30 【问题描述】:在Linux中我们可以使用下面的命令递归地改变文件和文件夹的权限模式。
找到“/Users/Test/Desktop/PATH”-exec * chmod 777 \;
我怎么能对 mac 做同样的事情,因为我反复收到以下错误。
发现:TEST_FILE:没有这样的文件或 目录
【问题讨论】:
【参考方案1】:问题是 *
正在被您的 shell 解释并扩展为一个名为 TEST_FILE
的文件,该文件恰好位于您当前的工作目录中,因此您告诉 find
执行名为TEST_FILE
不存在。我不确定你想用 *
完成什么,你应该删除它。
此外,您应该使用成语-exec program '' \+
而不是-exec program '' \;
,这样find
就不会为每个文件派生一个新进程。使用;
,为每个文件派生一个新进程,而使用+
,它只派生一个进程并在一个命令行上传递所有文件,这对于像chmod
这样的简单程序来说效率更高。
最后,chmod
可以使用-R
标志自行进行递归更改,因此除非您需要搜索特定文件,否则只需这样做:
chmod -R 777 /Users/Test/Desktop/PATH
【讨论】:
【参考方案2】:您可以只使用 -R(递归)标志。
chmod -R 777 /Users/Test/Desktop/PATH
【讨论】:
【参考方案3】:通过使用 CHMOD 是:
对于递归文件:
chmod -R 777 foldername or pathname
对于非递归:
chmod 777 foldername or pathname
【讨论】:
如果mac报错操作不允许,用sudo执行【参考方案4】:我没有 Mac OSx 机器来测试它,但在 Linux 上的 bash 中,我使用类似以下内容来对目录进行 chmod:
find . -type d -exec chmod 755 \+
但这也做同样的事情:
chmod 755 `find . -type d`
这也是如此:
chmod 755 $(find . -type d)
最后两个使用不同形式的子命令。第一个是使用反引号(旧的和折旧的),另一个是 $() 子命令语法。
所以我认为在你的情况下,以下将做你想要的。
chmod 777 $(find "/Users/Test/Desktop/PATH")
【讨论】:
我认为这是一个更好的答案,因为在大多数情况下,文件和目录不会具有相同的权限。但我认为'。参考是危险的——如果你在错误的目录中,你很容易把事情搞砸。如果参数列表太长,答案 2 和 3 也不起作用。【参考方案5】:如果他们给出路径目录错误!
在 MAC 中 然后转到文件夹 Get Info 和 Open Storage and Permission 更改为 privileges Read To Write
【讨论】:
以上是关于在mac中使用shell命令递归更改文件和文件夹的权限的主要内容,如果未能解决你的问题,请参考以下文章