Linux:查找目录并在其中创建文件

时间:2015-01-05 16:24:27

标签: linux .htaccess directory find

我想在所有上传文件中制作一个.htaccess文件。服务器上的目录。

我从这开始:

find / -type d -name 'uploads'

我得到了一个包含上传目录的所有目录的长列表。

现在我想在其中使用以下内容创建一个.htaccess文件:

Order deny,allow
Deny from all
<FilesMatch "\.(jpg|gif|png)$">
Order Deny,Allow
    Allow from all
</FilesMatch>

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

如果你使用bash作为你的shell,你可以这样做:

cat > /path/to/.htaccess <<EOF
Order deny,allow
Deny from all
<FilesMatch "\.(jpg|gif|png)$">
Order Deny,Allow
    Allow from all
</FilesMatch>
EOF

cat命令将其输入复制到其输出。在这种情况下,它的输出由>后面的文件名确定;换句话说,它是您要编写的.htaccess文件的完整路径。

<<EOF表示cat应该从后面的内容中获取输入,直到它再次遇到字符串EOF。这就是为什么EOF会再次出现在要复制到文件中的输入的末尾。

一旦您创建了此文件,您可以使用find将其复制到所需的任何位置,使用-exec开关,如果这是什么你想要的。

答案 1 :(得分:0)

Find可用于在特定路径下的每个目录的上下文中执行命令。

以下命令会将模板.htaccess复制到与查找条件匹配的每个目录中。您必须创建.htaccess.template并在以下命令中修改它的路径:

find / -type d -name 'uploads' -exec cp /home/user/.htaccess.template {}/.htaccess \;

答案 2 :(得分:0)

for i in `find / -type d -name 'uploads'`
do
  touch $i/.htaccess
  echo "Order deny,allow\nDeny from all\n<FilesMatch "\.(jpg|gif|png)$">\nOrder Deny,Allow\n\tAllow from all\n</FilesMatch>">.htaccess

done