![¿Cómo creo un bucle a partir de una lista resultante de un comando anterior?](https://rvso.com/image/109214/%C2%BFC%C3%B3mo%20creo%20un%20bucle%20a%20partir%20de%20una%20lista%20resultante%20de%20un%20comando%20anterior%3F.png)
Me gustaría crear una secuencia de comandos que enumere todos los propietarios de todos los subdirectorios y luego verifique cada ID si tengo acceso a las ID.
**$**ls -lrth /apps/wldomains | grep '^d' | awk '{ print $3 }'
userid1
userid2
userid3
userid4
.
.
.
**$**sesu - userid1
Please enter your password:
**userid1@SERVER:$**sesu - userid2
Please enter your password:
**userid2@SERVER:$**sesu - userid3
.
.
.
.
Respuesta1
use la función printf de awk, luego canalice a ksh.
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'
debe generar
sesu userid1
sesu userid2
sesu userid3
sesu userid4
simplemente agregue | ksh
cuando esté bien
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
- También compacté
grep | awk
enawk
Respuesta2
find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
find /apps/wldomains -type d
encontrará todos los directorios debajo/apps/wldomains
(incluido/apps/wldomains
él mismo).stat -c %U
generará el nombre de usuario del propietario del directorio encontrado.sort -u
tomará estos nombres de usuario y los ordenará en una lista de nombres de usuario distintos.xargs -n 1 sesu -
tomará esta lista y la ejecutarásesu -
para cada uno de ellos.
En Solaris, instale el paquete GNU coreutils y utilícelo gstat
en lugar de stat
.