找到所有名为 "example" 的目录,将其及其内容设置为可写

Find all dir's called "example", set it and its contents writable

我有一个站点,有一些模板目录,有几个模块,每个模块都有自己的模板目录(所以有 N 个名为 templates 的目录)。

这些目录中的每一个都有一个目录,称为translated。我需要一个脚本来设置所有这些目录及其内容可写。

我更喜欢通过循环这样做,这样我就可以回显结果。我的 shell 技能(仍然)非常少,我似乎无法将它们结合起来,我可以从当前工作目录中找到目录,但我似乎无法递归:

for f in ./*/translated/
do
    echo $f
done

这只能找到 ./templates/translated/,而不是 ./some/dirs/deeper/translated/

我现在可以使用 $f 作为 chmod a+rw,但这只会将内容设置为可写,我如何同时获取目录本身?我也需要在里面写入新文件。

夏天:
1) 如何使其递归?
2) 如何将目录本身设置为 +rw?

用于递归查找内容的工具称为 find

find . -name 'translated' -type d -exec echo chmod -R u+rw {} +

对结果满意就把echo去掉吧。如果您的 find 不支持 -exec ... +,请尝试使用 -exec ... \;

一些 shell 有一个通配符 **,它会做同样的事情,但是你的脚本将被绑定到那个特定的 shell。