Criando milhares de arquivos do shell

Criando milhares de arquivos do shell

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

informação relacionada