2015-01-05 63 views
1

我想在服务器上的所有'uploads'目录中创建一个.htaccess文件。Linux:找到一个目录并在其中创建一个文件

我开始用这样的:

find/-type d -name 'uploads' 

和我得到了在它的上传目录中的所有目录的一个长长的清单。

现在我想在其中创建.htaccess文件与此内容:

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

任何人可以帮助PLZ?

回答

0

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

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

find/-type d -name 'uploads' -exec cp /home/user/.htaccess.template {}/.htaccess \; 
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开关,如果这是你想要的。

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 
+1

你需要相当小心一点。如果任何路径名都有空格,它将不会很好地播放。 –

+0

是的,我明白 – Skynet

相关问题