Eu preciso de uma maneira de direcionar todos os subdiretórios sob os public_html
quais termina com .com
ou outros TLDs como .biz
ou .co.il
que eu possa listar, em um documento aqui .
Este meu hereoducmnet dentro de uma instrução pushd-popd
- if-fi
aninhada dentro de um for
loop:
for dir in "$HOME"/public_html/*/; do
if pushd "$dir"; then
cat <<-"EOF" >> "$HOME"/public_html/ALL_DOT_COM|ALL_DOT_BIZ/.htaccess
Apache_directive_set_1
Apache_directive_set_2
popd
EOF
fi
done 2>myErrors.txt
Existe uma maneira de combinar regex para conseguir isso, diretamente dentro da linha de redirecionamento/anexação do documento here (onde ALL_DOT_COM|ALL_DOT_BIZ
está)?
Suponho que você queira anexar
.htaccess
em todos os diretórios como$HOME/public_html/foo.com/
,$HOME/public_html/bar.biz/
etc.Seu
for
loop já gerencia o processamento de todos os diretórios, a questão é então apenas ajustar o glob para corresponder apenas aos finais necessários:Parece não haver necessidade do
cd
, poisdir
já contém o caminho completo do diretório.É claro que o acima corresponderá apenas aos domínios de nível superior listados. (Não tenho certeza se é isso que você quer, já que você escreveu "ou outros TLDs".) Se você não se importa com qual TLD existe no nome do diretório, apenas use
.../public_html/*/
, ou.../public_html/*.*/
, embora isso ainda suponha que não há mais nada lá. (Mas listar todos os TLDs é um pouco estranho, e eles podem criar mais...)Usando
tee -a
para anexar a vários arquivos e uma expansão de chave.Também não acho que o loop seja realmente necessário, assim como
tee
o trabalho de gravar em vários arquivos de uma só vez.A corda
será expandido em
e então os globs farão seu trabalho combinando com os subdiretórios apropriados.
Se houver o risco de um glob não corresponder a nada, você provavelmente também deve definir a
nullglob
opção shell embash
:Com esta opção definida, um padrão glob que não corresponde a nenhum nome de arquivo existente será expandido para uma string vazia.
Se o padrão
"$HOME"/public_html/*.{com,biz,co.il}/.htaccess
se expandir para uma string muito longa, você poderá ter problemas ao executartee
. Neste caso, você precisa do loop:Ainda não há necessidade de
cd
entrar nos diretórios.