找到所有名为 "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。
我有一个站点,有一些模板目录,有几个模块,每个模块都有自己的模板目录(所以有 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。