Você escolheu um excelente conjunto de ferramentas para o trabalho!
Gerar uma lista de arquivos que você deseja editar é muito simples - estou aqui supondo que você esteja usando um shell que expandirá a saída de nomes de arquivos correspondentes, como bash ou dash:
echo /home/*/site/assets/.htaccess > list.txt
No entanto, se *
puder significar mais de 1 nível de diretórios, eu usaria:
find -name '.htaccess' /home | grep '/site/assets/sym' > list.txt
Seu shell expandirá a expressão em uma lista e redirecionará a saída para list.txt. Um arquivo para cada linha.
Você também pode procurar por arquivos chamados .htaccess com find - para ver se há alguém que você tenha perdido, como este:
find -name '.htaccess' /home
Adicionando quebras de linha no texto de substituição - isso depende um pouco do seu editor. Quebras de linha são geralmente representadas como \n
O que você quer fazer, provavelmente pode ser obtido com um pequeno script de shell - quando for variable in expression; do .... done
é usado, ele executará as linhas entre do / done uma vez para cada palavra na expressão. OBSERVAÇÃO : isso pode ser contrafeito se os caminhos contiverem espaços.
for file in /home/*/site/assets/.htaccess; do
sed 's/RewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/RewriteCond %{REQUEST_URI} !^\/site\/assets\/sym\nRewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/g' $file > $file.new
mv $file $file.old
mv $file.new $file
done
(Isso deixará um arquivo chamado .htaccess.old no local).
Reescrito para abordagem de coleta de lista alternativa:
for file in $(find -name '.htaccess' /home | grep '/site/assets/sym'); do
sed 's/RewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/RewriteCond %{REQUEST_URI} !^\/site\/assets\/sym\nRewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/g' $file > $file.new
mv $file $file.old
mv $file.new $file
done
Ou, em uma linha, sem fazer backup:
for file in /home/*/site/assets/.htaccess; do sed -i 's/RewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/RewriteCond %{REQUEST_URI} !^\/site\/assets\/sym\nRewriteRule \^(.\*)\$ \/site\/assets\/sym\/\ \[L,NS\]/g' $file; done