如何在Linux中chmod和chown隐藏文件?


33

如何递归执行chmodchown隐藏文件?

sudo chmod -R 775 * 在隐藏文件上不起作用。

同样的道理sudo chown -R user:group

Answers:


35

如果还可以更改当前目录,请执行此操作,然后-R进行繁重的工作。-R不忽略隐藏文件。

sudo chmod -R 775 .

14
这(* .*)不是最安全的方法。特别是,它将递归到父目录,这意味着它chmod也是当前目录的同级文件。正确的方法应该是* ..?* .[^.]*,甚至更好(考虑通配符可能不匹配任何文件)$(ls -A)
jpalecek

1
@jpalecek:的输出ls不可解析;试图解析它是在麻烦。正确的方法是使用外壳程序。
Scott Severance

即使在Linux中,您可以更改chmod的args顺序,但是在linux和OS X之间执行x-plat脚本时,这也是您应使用的顺序,例如,sudo chmod 775 -R会变得令人费解,所以请坚持这个答案。
kayleeFrye_onDeck

35

* 默认情况下不包含隐藏文件,但是如果您使用的是bash,则可以执行以下操作:

shopt -s dotglob

在bash的builtin手册中阅读有关它的更多信息:

如果设置,则Bash包含以“。”开头的文件名。文件名扩展的结果。

这也将*包括隐藏文件。

chmod -R 775 *

通过以下方式禁用它:

shopt -u dotglob

2
怎么做zsh呢?
没什么特别的,在这里

2
您使用了(D)chmod -R 775 *(D)
通行

2

另一种选择是使用find我喜欢它,因为您可以对其进行非常精细的控制。

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

唯一的缺点是find在不同版本上具有不同的语法。


2

递归当前目录中的所有文件,包括隐藏文件:

chmod 755 -R ./* ./.[!.]*

当前目录中的所有文件(不是递归的),包括隐藏文件:

chmod 755 ./* ./.[!.]*

例如,这不会更改以2个点开头的异常文件名, "./..thisonescapesunharmed.txt"

另外,请注意不要删除“ x”位,否则将无法访问所有目录(一个目录需要x位以cd进入dir)。

记住此警报:切勿裸露*./*而应使用。

为避免在目录上设置权限时出现问题,请find改用。

find . -type f -exec chmod `VALUE` {} \;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.