for f in $(grep -l centralized.log /usr/local/directadmin/data/users/*/httpd.conf);
do
sed -i '33iCustomLog /var/log/centralized.log combined' "$f" && \
sed -i '65iCustomLog /var/log/centralized.log combined' "$f"
done
Isso itera apenas sobre todos os arquivos listados por grep
. Eu acho que é mais legível assim.
EDIT: versão robusta
function dofile {
sed -i '33iCustomLog /var/log/centralized.log combined' "$1" && \
sed -i '65iCustomLog /var/log/centralized.log combined' "$1"
}
grep -l centralized.log /usr/local/directadmin/data/users/*/httpd.conf | while read -r; do dofile "$REPLY"; done
Veja esta resposta para entender melhor o texto acima.
EDIT2: Espero que isso satisfaça @ alex-stragies. Manteve a edição anterior para o registro.
find /usr/local/directadmin/data/users/ -maxdepth 2 -mindepth 2 -name httpd.conf | \
xargs -L1 -I% sh -c \
"sed -i '33iCustomLog /var/log/centralized.log combined' % && sed -i '65iCustomLog /var/log/centralized.log combined' %"
Se um usuário puder ser nomeado com um caractere %
, basta alterá-lo de acordo.