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