Creando miles de archivos desde Shell

Creando miles de archivos desde Shell

Tengo miles de directorios, todos tienen este formato;

/var/www/vhosts/[USERNAME].company.com/conf/

y tengo un archivo llamado x.txt, su contenido debería tener

[USERNAME] and some static text...

Entonces, cuando hago dir /var/www/vhosts/*/conf/, obtengo todos los directorios en los que necesito copiar el archivo, sin embargo, no sé cómo tomar ese [NOMBRE DE USUARIO] y colocarlo. ese archivo que necesito copiar.

Todas las sugerencias son bienvenidas. Sólo puedo usar scripts de shell en este entorno.

Gracias,

Respuesta1

cd /var/www/vhosts && para d en */; hacer
   usuario=${d%%.*}
   echo "$usuario bla, bla" > "${d}/conf/x.txt"
hecho

... debería conseguirte prácticamente lo que quieres.

Respuesta2

Dennis y Mike se aseguran de citar ${dir}. Si hay directorios con espacios, esto podría provocar algunos problemas.

echo "$user and some static text..." > "${dir}/conf/x.txt"

Por motivos de portabilidad, usaría "${d%%.*}" para encontrar el nombre del usuario.

Respuesta3

Aquí hay otra forma de hacerlo:

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

información relacionada