viernes, 13 de noviembre de 2009

Copiar un fichero a muchas carpetas [Linux]

Bien señores. Queremos copiar un fichero determinado en el /home de cada uno de los usuarios del sistema. Si tenemos dos usuarios, ejecutaremos dos comandos. Si tenemos doscientos mejor crear un script. Se puede mejorar bastante, pero tampoco quiero complicarlo demasiado:
#Variables configurables, el directorio y el nombre del fichero
DIR="/home"
FICHERO="fichero1"
#Hacemos un for a partir de la lista que nos sale del comando LS -A
for n in `ls -a $DIR` ;do
#Condición para omitir los directorios "." y "..". Comprobación de que $n sea un directorio.
if !( [ "$n" = "." ] || [ "$n" = ".." ] ) && [ -d ./$DIR/$n ] ;then
#Mostramos un mensajito
echo "Copiado ar1 a ./$DIR/$n"

#Copiamos el fichero
cp $FICHERO ./$DIR/$n
#Cambiamos los permisos. En nombre de usuario y su directorio en /home deben ser los mismos
chown $n:$n ./$DIR/$n/$FICHERO
fi
done;
Link sobre loops en BASH

2 comentarios: