Linux:找到一个目录并在其中创建一个文件

Linux: Find a directory and creat a file in it

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

我从这个开始:

find / -type d -name 'uploads'

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

现在我想在其中创建一个包含以下内容的 .htaccess 文件:

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

有人能帮忙吗?

如果您使用 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 开关,如果这是您想要的。

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

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

find / -type d -name 'uploads' -exec cp /home/user/.htaccess.template {}/.htaccess \;
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