如何仅修改当前目录下文件权限而不改动主目录和子目录内容?
解决方案
正确的find命令
你需要给find添加-maxdepth 1参数限制查找层级,修改后的命令如下:
# 先执行这条确认匹配的文件符合预期,避免误改 find /dir/main_folder -maxdepth 1 -type f -print # 确认输出的都是目标文件后,执行修改权限的命令 find /dir/main_folder -maxdepth 1 -type f -exec chmod 644 {} \;
请将命令中的/dir/main_folder替换为你实际要操作的目录路径(比如你测试时的/opt/lampp/htdocs)即可。
参数说明
-maxdepth 1:限制find仅在指定目录的第一层搜索,不会递归进入任何子目录-type f:仅匹配普通文件,自动过滤掉目标目录本身和子目录,不会修改任何目录的权限
替代方案(shell循环实现)
如果不想使用find命令,也可以用原生shell循环实现相同效果:
for file in /dir/main_folder/*; do # 仅当匹配项是普通文件时才修改权限,自动跳过子目录 [ -f "$file" ] && chmod 644 "$file" done
原命令问题说明
你之前使用的命令没有添加层级限制,find默认会递归遍历所有子目录下的内容,所以会修改子目录内的文件,不符合需求。
内容的提问来源于stack exchange,提问作者lonerunner
相关产品推荐
相关产品推荐

