ls -1
enumerará un archivo por línea. Este es el valor predeterminado cuando la salida de ls
se redirige a cualquier lugar que no sea una terminal.
Para obtener el resultado que busca, sería mejor que hiciera algo como
ls -l | awk 'NR > 1 { print $9 ":" $1 }'
o mejor aún,
stat -c "%n:%A" *
aunque ambos enumeran todos los permisos, no solo los permisos de grupo. Para ver solo los permisos de grupo, use
ls -l | awk 'NR > 1 { print $9 ":" substr($1,5,3) }'
o
stat -c "%n:%A" * | sed 's/....\(...\)...$/\1/'
(sombrero -propina a usuario1404316 para la expresión sed
).
Las variantes de análisisls
-no aceptan espacios y otros caracteres en blanco en los nombres de archivo, por lo que no deben usarse en general .
Si desea los archivos solo para el usuario actual.
ls -l | awk -v var="$(whoami)" '$4 == var {print $9}'
Eso solo imprimirá archivos que pertenezcan al usuario actual, en el formato que requiera.
Hay una solución mucho más sencilla si tiene acceso a una versión de find
que incluye las extensiones GNU. Para averiguarlo, ejecute man find
y busque el-printf
(Para hacer eso, primero presione/^ *-printf
). Si lo haces, estás de suerte, porque tu solución podría ser:
find. -maxdepth 1 -type f -printf "%f: %M\n" | sed 's/....\(...\)...$/\1/'
Como beneficio adicional, esta respuesta funcionará en el caso inusual de un nombre de archivo incluyendo el carácter de dos puntos.