Bash 路径全局匹配 pwd 中的点文件和父文件

Bash 路径全局匹配 pwd 中的点文件和父文件

命令

$ chmod -R 700 ./.*

搜索并尝试chmod上方的文件和目录pwd。为什么?

预期结果:考虑pwd/home/user,我希望将.中的第一个./.*替换为/home/user。然后我希望将chmod递归地(-R)应用于中以点(.*)开头的所有文件/home/user,因此:$ chmod -R 700 /home/user/.*全部一起。

我收到一系列错误,例如:

chmod: cannot access `./../otheruser/file': Permission denied

这是因为..比赛而发生的吗.*

答案1

./.*也匹配./..,导致chmod -R尝试递归中的所有内容..

添加:

如果您只想要当前目录中的点文件和目录,请尝试.[!.]*,它匹配以 开头.并且后面至少有一个非点字符的所有内容。

如果您想要所有点文件位于当前目录树中的任何位置,您可以使用find这里所示的$(...)命令替换将的输出粘贴find回命令行作为的参数chmod

chmod 700 $(find -name ".[!.]*")

相关内容