You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用find-exec批量修改文件所有者失败问题求助

使用find-exec批量修改文件所有者失败问题求助

嗨,我来帮你搞定这个问题~

你遇到的报错原因很明确:给-exec后面的整个命令加了单引号!

find的-exec参数逻辑是这样的:它会把你写的内容拆分成「命令程序」+「参数」两部分,而你用单引号把chown shahnawaz:shahnawaz {}整个包起来后,find会误以为你要执行一个名为chown shahnawaz:shahnawaz /home/shahnawaz/file1的可执行文件——这显然不存在,所以才会报“没有这样的文件或目录”的错误。而你单独执行chown命令时没有加引号,shell能正确识别chown是命令、后面的是参数,所以能正常运行。

正确的命令写法

直接去掉引号就可以了:

sudo find ~/ -gid 1001 -exec chown shahnawaz:shahnawaz {} \;

如果要更高效(减少重复创建chown进程的次数),可以把末尾的\;换成+,这样find会把所有找到的文件一次性传给chown:

sudo find ~/ -gid 1001 -exec chown shahnawaz:shahnawaz {} +

额外优化建议

因为你的需求只是把文件的所属组改成你的主组,其实可以单独用chgrp命令,写法更简洁:

sudo find ~/ -gid 1001 -exec chgrp shahnawaz {} \;

同样,也可以换成+来提升效率。

另外确认一下:你用-gid 1001来匹配原属组已删除的文件是完全正确的,因为组被删除后,文件的组ID会保留原来的数值,这个匹配逻辑没问题。

备注:内容来源于stack exchange,提问作者Sk Shahnawaz-ul Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 02:44:54