如何以递归方式修改目录,包括隐藏文件或目录

如何以递归方式修改目录,包括隐藏文件或目录

似乎带有递归标志的 chown 对隐藏目录或文件不起作用。有没有简单的解决方法?

答案1

我非常确定这个-R标志确实有效 - 对我来说它一直有效。不起作用的,以及在我早期使用命令行时让我犯错的,是*在有隐藏文件/目录的目录中使用。所以做

$ chown -R /home/user/*

不会执行隐藏文件和目录。但是如果你使用

$ chown -R /home/user/.[^.]*

然后你将执行所有隐藏文件,(但不是.../home/user/.*会做的那样)。说了这么多,我期望

$ chown -R /home/user

获取里面的所有隐藏文件和目录/home/user- 尽管这当然也会改变目录本身的权限,但这可能不是您想要的。

答案2

我相信以下命令应该可以解决这个问题

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

答案3

“chown -R” 有效,但另一种方法是使用 find。

 find /path/to/dir -exec chown USER {} \;

答案4

您可以dotglob暂时更改属性以扩展 . 文件,然后将其恢复。

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

更多详情dotglob可参阅这里

相关内容