Tenho milhares de diretórios, todos com esse formato;
/var/www/vhosts/[USERNAME].company.com/conf/
e eu tenho um arquivo chamado x.txt, seu conteúdo deveria ter
[USERNAME] and some static text...
então, quando faço dir /var/www/vhosts/*/conf/ , estou obtendo todos os diretórios nos quais preciso copiar o arquivo, no entanto, não sei como pegar esse [NOME DE USUÁRIO] e colocá-lo aquele arquivo que preciso copiar.
Todas as sugestões são bem-vindas. Só posso usar scripts de shell neste ambiente.
Obrigado,
Responder1
cd /var/www/vhosts && for d in */; fazer usuário=${d%%.*} echo "$user blá blá" > "${d}/conf/x.txt" feito
... deve conseguir praticamente o que você deseja.
Responder2
Dennis e Mike certifique-se de citar ${dir}. Se houver algum diretório com espaços, isso poderá resultar em alguns problemas.
echo "$user and some static text..." > "${dir}/conf/x.txt"
Por uma questão de portabilidade, eu usaria "${d%%.*}" para encontrar o nome do usuário.
Responder3
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