CHMOD 777终端中的特定文件扩展名

时间:2014-02-05 22:21:14

标签: regex macos terminal chmod

我正在尝试将我的Mac上的所有.doc文件CHMOD 777。通过终端是否有办法可以做到这一点?

__

感谢您的回复。我认为这是更改Word doc文件权限的方法。我在Mac上有2个用户共享一个文件夹。但是当一个人创建一个doc文件时,另一个人只有读取权限。我希望他们两个都拥有这个,或者每个人。它无关紧要。我还想回过头来追溯所有过去的文档,其中一些用户A具有读取和写入权限,其中一些用户B具有读取和写入权限,两者都具有读取和写入权限。还有另一种方法吗?据我所知,这是一个Mac权限问题,Word中没有任何内容。我认为终端中的CHMOD 777就是这样做的。

3 个答案:

答案 0 :(得分:0)

使用findxargs-exec的{​​{1}}选项。

find

现在,/home/erjablow> find . -name "*.doc" | xargs -n 3 chmod a+rwx # Find the names of all "doc" files beneath the current directory. # Gather them up 3 at a time, and execute # chmod a+rwx file1 file2 file3 # on each set. 是一个讨厌的实用程序,很难使用。它可以做一些荒谬的事情,一个拼写错误可能毁了一天。

为什么要让所有doc文件都不受保护?

答案 1 :(得分:0)

我同意先前的回复find令人讨厌。并将它连接到另一个实用程序可能会很棘手。如果我必须这样做,我会指定文件类型并使用find的exec函数而不是xargs。

find / -x -type f -iname *.doc \-exec chmod 777 {} \;

-x将仅搜索本地Macintosh HD并排除任何已安装的卷

您可能需要考虑其他条件来优化搜索,例如不同的起点或排除特定文件夹和/或文件扩展名

find / -x find / -not \( -path "*/some_sub-folder*" -or -path "*/some_other_sub-folder*" \) -type f \( -iname *.doc -or -iname *.docx \) \-exec chmod 777 {} \;

或者如果您开始使用find|xargs,则应该尝试使用-print而不是-print0,以便将每个文件作为单独的行返回。这也可以解决它。

无论哪种方式,在执行此操作之前进行备份并仔细测试。祝你好运,HTH。

答案 2 :(得分:0)

唐'吨

如果真的想要这样做:

find / -x -name `*.doc` -type f -print0 | xargs -0 chmod 777

我没有测试过这个。我不保证findxargs命令的Mac版本支持所有这些选项;我已经习惯了在Linux系统上常见的GNU findutils版本。

find命令从根目录开始,将自身(-x)限制为当前文件系统,选择名称以.doc结尾的文件,并以空字符分隔打印它们。如果您的文件或目录的名称包含空格,则后者是必需的。 -x选项等同于-xdev的其他一些版本中的find选项。

如果要匹配名称位于.Doc.DOC等的文件,请使用-iname '*.doc'而不是-name '*.doc'

xargs命令采用这个以空分隔的文件列表,并在每个文件上执行chmod 777,将列表分成不会溢出chmod&#39的块; s命令行。

让我再次强调:

  1. 我没有测试过上面的命令。我目前无法访问MacOS系统;我刚刚在线阅读了相关的手册页。如果您想进行干运行,请将xargs替换为echo xargs;它将打印它将执行的命令(期望很多输出用很长的行)。或者将xargs替换为xargs -n 1 echo,为每个文件生成一行。

  2. 首先这样做是个坏主意。 777为系统上的每个用户提供读,写和执行权限。 .doc个文件不是可执行文件;给他们执行权限在类Unix系统上毫无意义。 644可能是一个更明智的价值(对所有者来说是读/写,对其他人来说只读)。