我有这个:
chmod u+x $(find scripts -name "*.sh")
但我相信它只对 find 列表中的第一项运行 chmod u+x ,因为结果是换行符分隔的。
如何对 find 调用返回的每个项目运行 chmod u+x ?
我的猜测是 xargs 是最好的方法?像这样的东西:
find scripts -name "*.sh" | xargs chmod u+x
答案1
最安全的方法是直接find
执行chmod
,并且在选择文件时要更加小心:
find scripts -type f -name '*.sh' -exec chmod u+x {} +
这将找到目录中或scripts
目录下名称以 结尾的所有常规文件.sh
,并将chmod u+x
同时在尽可能多的文件上运行。它将毫无问题地处理可能奇怪的文件名。
要仅更改需要它的文件的权限:
find scripts -type f -name '*.sh' ! -perm -u+x -exec chmod u+x {} +