Criando milhares de arquivos a partir do shell

4

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,

    
por Devrim 24.01.2010 / 04:01

3 respostas

5
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.

    
por 24.01.2010 / 04:17
3

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.

    
por 24.01.2010 / 07:50
2

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
    
por 24.01.2010 / 07:43

Tags