Bash 路径 glob 匹配点文件和 pwd 中的父项

Dmi*_*sky 1 linux bash

命令

$ chmod -R 700 ./.*
Run Code Online (Sandbox Code Playgroud)

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

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

我收到了一堆错误,例如:

chmod: cannot access `./../otheruser/file': Permission denied
Run Code Online (Sandbox Code Playgroud)

这是因为..匹配而发生的.*吗?

Nic*_*ton 6

./.*也匹配./..,导致chmod -R尝试递归...

添加:

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

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

chmod 700 $(find -name ".[!.]*")
Run Code Online (Sandbox Code Playgroud)