es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar los atributos deseados de un archivo utilizando awk.

Si estoy buscando ciertos atributos en un archivo, por ejemplo, “r-x” para el usuario, una expresión regular como ‘^-r.x’ hará el trabajo. Pero, ¿qué pasa si tengo que mostrar archivos en los que el usuario y otros tienen los mismos derechos para el atributo “write”? Bueno, lo que pensé fue pasar el resultado del comando stat a awk:

stat --format="%a %n" nombre_archivo (permisos en octal + nombre)

y luego usar el script:

others=$1 % 10;
group = ($1 % 100 - others)/10;
owner = int($1 / 100);

para obtener los permisos de cada uno y luego

switch (owner) {

case 7:
case 6:
case 3:
case 2:

if (other!=1 || other !=4 || other!=5)

    print $2;
}

case 1:
case 4:
case 5:

Supongo que debe haber una forma más simple de hacerlo, sin embargo…

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en linux, bash, unix y awk, hay una forma más sencilla de mostrar los archivos en los que el usuario y otros tienen los mismos derechos de escritura. En lugar de utilizar el comando stat y el script awk, puedes usar el comando find con la opción -perm. Por ejemplo, para encontrar archivos en los que el usuario y otros tengan acceso de escritura, puedes utilizar el siguiente comando:

    find . -perm /022

    El punto (.) especifica que la búsqueda comience desde el directorio actual, y /022 especifica el acceso de escritura tanto para el usuario como para el grupo, y acceso de lectura para otros. También puedes utilizar la opción -type f para buscar únicamente archivos, y la opción -ls para listar los archivos con sus permisos.

    find . -type f -perm /022 -ls

Comments are closed.