如何批量为服务器上各项目的顶层.git目录设置chmod 700权限(排除.git内部子目录)
如何批量为服务器上各项目的顶层.git目录设置chmod 700权限(排除.git内部子目录)
你好,这个问题可以通过调整find命令的参数来精准定位顶层的.git目录,避免误修改其内部子目录的权限。这里给你两种可靠的解决方案:
方法一:使用
-prune参数(推荐,更高效)
这个参数的核心作用是:找到目标目录后,立刻停止深入其内部查找,完美匹配你只修改顶层.git的需求。执行以下命令即可:find */.git -type d -prune -exec chmod 700 {} \;具体参数解释:
*/.git:指定从当前目录下所有直接子项目目录里的.git目录开始查找-type d:确保我们只处理目录类型的文件-prune:找到.git目录后,不再遍历它的子目录,避免选中.git/objects这类内部文件夹-exec chmod 700 {} \;:对每一个找到的目标目录执行chmod 700权限修改
方法二:限制查找深度
如果你担心*/.git的匹配范围不够灵活,也可以用-maxdepth参数限制查找深度,确保只定位到项目根目录下的顶层.git:find . -type d -name ".git" -maxdepth 2 -exec chmod 700 {} \;参数说明:
.:从当前目录开始递归查找-maxdepth 2:限制查找深度为2层(当前目录为第0层,项目目录为第1层,.git是第2层),这样就不会触及.git内部的子目录(那些属于第3层及以上)-name ".git":精准匹配名为.git的目录
验证小技巧
在执行权限修改前,你可以先去掉命令末尾的-exec chmod 700 {} \;,只运行前面的find命令,确认输出结果只有site1/.git、site2/.git这类目标目录,确保无误后再加上权限修改的部分,这样能避免误操作。
备注:内容来源于stack exchange,提问作者Khoi Pro
相关产品推荐
相关产品推荐

