使 dir 中的所有文件可执行(非递归),同时严格确保非递归性

使 dir 中的所有文件可执行(非递归),同时严格确保非递归性

我对这个问题的标题理解很奇怪,但我确实想知道在某些情况下是否需要格外小心,并在以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 {} +

相关内容