Linux - Comando cut

 
Vista:

Comando cut

Publicado por mcvallef (9 intervenciones) el 21/11/2006 09:46:50
Hola,
Intento hacer un listado con SOLO los nombres de los directorios del directorio /usr de esta forma:
ls -l /usr | grep "^d" | cut -f9 -d" "
El problema es que la separación entre los campos cuando hacemos ls -l no es un espacio,sino que entre cada uno de ellos hay distinta separacion y por tanto no fuciona el cut cortando campos, si funciona cortando columnas pero eso no me interesa porque lleva más tiempo contar columnas una a una.
¿Como puedo hacerlo? solo quiero obtener el campo del nombre del directorio nada más.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comando cut

Publicado por Tom (482 intervenciones) el 21/11/2006 09:52:37
Hay formas mejores de listar los directorios.
Pero en tu caso, haz esto:

ls -l /usr | grep '*d' | while read A; do echo "$A" | cut -d' ' -f9; done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por mcvallef (9 intervenciones) el 21/11/2006 10:16:37
Hola,
Tom, no funciona lo que me has respondido :
ls -l /usr | grep '*d' | while read A; do echo "$A" | cut -d' ' -f9 done
Esto no funciona desde la línea de órdenes, y si es en un script eso no me interesa.
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por Asche (1 intervención) el 13/10/2007 03:59:11
yo estaba tratando de hacer lo mismo!!! no puede ser que el bash no tenga esa opcion , pero bueh, me las arregle, a ver si les sirve!!

ls -al | grep dr | cut -d ":" -f2 | cut -d " " -f2

bueno, ahi supuse que todos los directorios tienen permiso de lectura para el dueño, pero funciona, pruebenlo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por Tom (482 intervenciones) el 21/11/2006 16:18:48
Bueno, faltaba un ;
Prueba esto mejor:

ls -F /usr | grep '/$' | tr '/' '\0'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por Tom (482 intervenciones) el 21/11/2006 16:23:17
Como tú querías es (lo habrías sacado con un pelín de imaginación):
ls -l /usr | grep '^d' | while read A; do echo $A | cut -d' ' -f9 ; done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por mcvallef (9 intervenciones) el 22/11/2006 08:18:21
Hola,
Muchas gracias Tom por resolver mi duda. He modificado un poco tu solución he puesto ls -F /usr | grep '/$' | tr '/' ' '.
La otra forma utilizando while no la entiendo:
ls -l /usr | grep '^d' | while read A; do echo $A | cut -d ' ' -f9; done.
Bye,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comando cut

Publicado por Tom (10 intervenciones) el 22/11/2006 08:33:39
El shell es así :-)
El while read, en ese caso se utiliza para ir leyendo la salida estandard de grep, línea a línea. ¿ Para qué? fácil, porque luego con 'echo' conseguimos quitar los espacios en blanco duplicados y que funcione correctamente el 'cut'.

También podrías haber usado 'awk':

ls -l /usr | grep '^d' | awk '{print $9}'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar