cd /var/www/vhosts && for d in */; do user=${d%%.*} echo "$user blah blah" > "${d}/conf/x.txt" done
... deve te dar praticamente o que você quer.
Eu tenho milhares de diretórios, todos eles têm esse formato;
/var/www/vhosts/[USERNAME].company.com/conf/
e eu tenho um arquivo chamado x.txt, o conteúdo deve ter
[USERNAME] and some static text...
então quando eu faço o diretório / var / www / vhosts / * / conf /, eu estou recebendo todos os diretórios que eu preciso copiar o arquivo, no entanto, eu não sei como pegar esse [USERNAME] e coloque-o nesse arquivo que eu preciso copiar.
Todas as sugestões são bem-vindas. Eu só posso usar scripts de shell neste ambiente.
Obrigado,
Dennis e Mike se certificam de que você está citando $ {dir}. Se houver algum diretório com espaços, isso pode resultar em alguns problemas.
echo "$user and some static text..." > "${dir}/conf/x.txt"
Por portabilidade, eu usaria "$ {d %%. *}" para encontrar o nome do usuário.
Aqui está outra maneira de fazer isso:
cd /var/www/vhosts &&
find -maxdepth 1 -mindepth 1 -type d -print0 |
while read -d '' -r dir
do
user=$(basename "$dir" .company.com)
echo "$user and some static text..." > "${dir}/conf/x.txt"
done