使用mac中的shell命令递归更改文件和文件夹的权限

时间:2010-09-30 20:21:21

标签: macos shell permissions

在Linux中,我们可以使用以下命令以递归方式更改文件和文件夹的权限模式。

  

找到“/ Users / Test / Desktop / PATH”-exec   * chmod 777 {} \;

我怎么能为mac做同样的事情,因为我得到了以下错误。

  

find:TEST_FILE:没有这样的文件或   目录

5 个答案:

答案 0 :(得分:37)

问题是,*正在被shell解释,并且正在扩展到恰好位于当前工作目录中的名为TEST_FILE的文件,因此您告诉{{1}执行不存在的名为find的命令。我不确定你要用TEST_FILE完成什么,你应该删除它。

此外,您应该使用惯用语*而不是-exec program '{}' \+,以便-exec program '{}' \;不为每个文件分叉新进程。使用find,为每个文件分叉一个新进程,而对于;,它只分叉一个进程并在单个命令行上传递所有文件,对于像{{1}这样的简单程序更有效率。

最后,+可以使用chmod标志自行进行递归更改,因此除非您需要搜索特定文件,否则请执行以下操作:

chmod

答案 1 :(得分:28)

您可以使用-R(递归)标记。

chmod -R 777 /Users/Test/Desktop/PATH

答案 2 :(得分:10)

使用CHMOD是:

对于递归文件:

chmod -R 777 foldername or pathname

非递归:

chmod 777 foldername or pathname

答案 3 :(得分:4)

我没有Mac OSx机器来测试它,但是在Linux上的bash我使用类似下面的内容来chmod only目录:

find . -type d -exec chmod 755 {} \+

但这也做同样的事情:

chmod 755 `find . -type d`

这样做:

chmod 755 $(find . -type d)

最后两个使用不同形式的子命令。第一种是使用反引号(旧的和折旧的),另一种是使用 $()子命令语法。

所以我认为在你的情况下,以下将做你想要的。

chmod 777 $(find "/Users/Test/Desktop/PATH")

答案 4 :(得分:0)

如果他们给出了路径目录错误!

在MAC中 然后转到文件夹获取信息,然后将打开存储空间和权限更改为特权 读到写

相关问题