我对这个问题的标题理解很奇怪,但我确实想知道在某些情况下是否需要格外小心,并在以chmod
非递归方式(不带-R
参数)更改权限时以某种方式“强制”非递归性。
假设我有一个目录~/x
。该目录有一些文件,以及一个也有一些文件的子目录~/x/y
,我决定使所有x
文件可执行而不影响y
.我可以执行:
chmod +x ~/x/*
当然,应该chmod
可以完成这项工作,并且在任何 Bash 版本(包括未来版本)中,POSIX 逻辑不太可能被更改,并且上面的 chmod 也会影响子目录,但我确实想知道 Bash 中是否可能存在任何情况(或常见的 shell),其中chmod +x ~/x/*
也将覆盖y
文件,以及如何改进我的命令以防止此类意外更改?
答案1
您可以使用查找和限制来仅获取当前目录中的文件
find ~/x -maxdepth 1 -type f -exec chmod +x {} +