1 votos

¿Encontrar la lectura con los permisos como POSIX?

Sistemas dirigidos: Linux y OS X. Original código que funciona en Ubuntu 16.04 pero no en OS X, pero sigue sin éxito POSIX normas

gfind ~ ! -readable -prune -o -type f -name "*.tex" 

donde

  • ! se trata de Negación de un primario; el operador unario NOT.
  • -readable TODO esto no parece ser POSIX
  • -prune se trata de El primario siempre se evaluará como verdadero; hará que find no descienda por la ruta actual si es un directorio. Si se especifica el primario -depth, el primario -prune no tendrá efecto.
  • -o se trata de Alternancia de primarios; el operador OR. La segunda expresión no se evaluará si la primera es verdadera. Es decir, si no, entonces esto.
  • -type sobre el tipo, aquí archivo f
  • -name sobre el nombre del archivo, aquí *.tex

Salida

gfind: paths must precede expression: type
Usage: gfind [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Propuesta de arreglo

Utilice -perm 0744 en lugar de -readable pero no estoy seguro de que sea equivalente

gfind ~ ! -perm 0744 -prune -o -type f -name "*.tex" 

La salida: /Users/masi . Resultado esperado: lista de archivos .tex.


¿Cómo se pueden establecer correctamente los permisos de búsqueda para la lectura?

2voto

La doble negación del principio lo hace bastante complejo. Basta con utilizar

gfind . -readable -type f -name '*.tex'

debería funcionar.

PS: O find . -perm +0666 -type f -name '*.tex' por defecto find .

0voto

Michael Zhou Puntos 167

Después de intentar utilizar find Las opciones de la empresa -user , -group y -perm El find el mando se volvió rápidamente inmanejable. Un inline script con find utilizando la función -r test sería portable entre los dos sistemas operativos.

find ~ -type f -name '*.tex' -exec sh -c 'for file
do
    [ -r "$file" ] && echo "$file"
done
' sh {} + 2>/dev/null

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X