6 votos

Cortar en CLI no funciona como se esperaba - devuelve líneas completas cada vez

Estoy ejecutando MacOS Mojave y estoy tratando de obtener una lista de propietarios de archivos en una ruta determinada. Estoy tratando de hacerlo así, pero no funciona.

 $ ls -l /usr | cut -f3
total 0
drwxr-xr-x  971 root  wheel  31072 23 sty 20:05 bin
drwxr-xr-x  304 root  wheel   9728 23 sty 20:05 lib
drwxr-xr-x  248 root  wheel   7936 23 sty 20:05 libexec
drwxr-xr-x   16 root  wheel    512  3 lis 10:50 local
drwxr-xr-x  239 root  wheel   7648 23 sty 20:05 sbin
drwxr-xr-x   46 root  wheel   1472  3 lis 10:41 share
drwxr-xr-x    5 root  wheel    160 21 wrz 06:06 standalone
 

La especificación de delimitadores parece funcionar pero no para el carácter TAB (que debería ser el predeterminado).

 $ ls -l /usr | cut -f3 -d' '

971
304
248

239
 

Estoy usando ZSH con Oh my zsh e iTerm 2 si importa.

18voto

Michael Zhou Puntos 167

Puede comprimir los espacios en blanco en un solo espacio en blanco en la salida de ls y luego usar cut .

 ls -l /usr | tr -s ' ' | cut -d ' ' -f3
 

pero evite analizar ls salida. Aquí hay una solución alternativa.

 stat -f'%Su' /usr/*
 

12voto

ls no usa pestañas, cut no funciona con un número variable de delimitadores entre campos.

 ls -l /usr | awk '{print $3}'
 

funcionará, o

 ls -l /usr | awk 'NR > 1 {print $3}'
 

si desea omitir la primera línea ( total 0 en su ejemplo).

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