【发布时间】:2011-04-19 13:41:30
【问题描述】:
在Linux中我们可以使用下面的命令递归地改变文件和文件夹的权限模式。
找到“/Users/Test/Desktop/PATH”-exec * chmod 777 {} \;
我怎么能对 mac 做同样的事情,因为我反复收到以下错误。
发现:TEST_FILE:没有这样的文件或 目录
【问题讨论】:
标签: macos shell permissions
在Linux中我们可以使用下面的命令递归地改变文件和文件夹的权限模式。
找到“/Users/Test/Desktop/PATH”-exec * chmod 777 {} \;
我怎么能对 mac 做同样的事情,因为我反复收到以下错误。
发现:TEST_FILE:没有这样的文件或 目录
【问题讨论】:
标签: macos shell permissions
问题是 * 正在被您的 shell 解释并扩展为一个名为 TEST_FILE 的文件,该文件恰好位于您当前的工作目录中,因此您告诉 find 执行名为TEST_FILE 不存在。我不确定你想用 * 完成什么,你应该删除它。
此外,您应该使用成语-exec program '{}' \+ 而不是-exec program '{}' \;,这样find 就不会为每个文件派生一个新进程。使用;,为每个文件派生一个新进程,而使用+,它只派生一个进程并在一个命令行上传递所有文件,这对于像chmod 这样的简单程序来说效率更高。
最后,chmod 可以使用-R 标志自行进行递归更改,因此除非您需要搜索特定文件,否则只需这样做:
chmod -R 777 /Users/Test/Desktop/PATH
【讨论】:
您可以只使用 -R(递归)标志。
chmod -R 777 /Users/Test/Desktop/PATH
【讨论】:
通过使用 CHMOD 是:
对于递归文件:
chmod -R 777 foldername or pathname
对于非递归:
chmod 777 foldername or pathname
【讨论】:
我没有 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")
【讨论】:
如果他们给出路径目录错误!
在 MAC 中 然后转到文件夹 Get Info 和 Open Storage and Permission 更改为 privileges Read To Write
【讨论】: