是否有一个简洁的 linux 命令(适用于 OSX)来更改文件夹及其所有内容的权限,但保持当前目录中的文件不变?例如:
/parent/folder1 <-更改权限
/parent/folder2 <-更改权限
/parent/folder3 <-更改权限
/parent/folder3/file1 <-更改权限
/parent/folder3/file2 <-更改权限
/parent/file1 <-不要更改权限
/parent/file2 <-不要更改权限
是否有一个简洁的 linux 命令(适用于 OSX)来更改文件夹及其所有内容的权限,但保持当前目录中的文件不变?例如:
/parent/folder1 <-更改权限
/parent/folder2 <-更改权限
/parent/folder3 <-更改权限
/parent/folder3/file1 <-更改权限
/parent/folder3/file2 <-更改权限
/parent/file1 <-不要更改权限
/parent/file2 <-不要更改权限
我相信你需要运行 2 个命令。这是一种方法:
第一个在当前目录级别和更深层次执行目录。第二个比当前目录更深的所有文件和目录。
这将更改当前目录中的每个目录以及其中的所有文件和文件夹的权限,我认为这就是您想要的,但要小心,因为递归...
您可以
find
为此使用,也可以使用循环for
:有一个简单的案例
chmod
可以自己做到这一点。如果您设置模式+X
(注意,大写,而不是小写),它将仅适用于目录。这通常用于您希望使目录树组中的所有文件或世界可读的情况。你会做这样的事情:这将为它下面的所有目录添加读取和执行权限
somedir
,但只是读取它下面的常规文件的权限。但是,不幸的是,没有相应的读/写权限模式。查找当前目录的每个子目录(-type d 和 -mindepth 1),并为找到的每个目录中的所有文件运行 chmod。
{}
指的是 find 正在评估的目录,并/*
告诉 chmod 仅对该目录中的文件进行操作。这是一般情况下的单线:
-print0
and参数使用 NUL而-0
不是换行符作为记录分隔符,因此这对于带有空格、换行符等的文件名是安全的。与不同-exec
的是,它将文件名批处理为更少的chmod
.奖金:
/parent
如果您知道在(like )的顶层没有隐藏目录,/parent/.foo
那就更容易了: