17 votos

¿Cómo puedo seleccionar un campo o columna de la salida de `ls -l`?

Mi objetivo es engañosamente simple (al menos para mí). Me gustaría aprovechar la salida de ls -l o ls -lh y seleccione uno de los campos.

Estoy buscando este ser como prueba de balas como sea posible, es decir, asumir que los nombres de archivo pueden tener un número variable de espacios, no todo en el campo tiene la misma longitud, etc.

Puntos de bonificación por tener un script que va a tomar el nombre de el campo (o incluso sólo un campo de número) y, a continuación, devuelve el contenido del campo.

Quiero convertir

enter image description here

en:

enter image description here

16voto

ormaaj Puntos 231

Nunca analizar ls. Uso GNU find. O si la portabilidad no es importante, stat(1).

find . -maxdepth 1 -printf '%Td\n'

Para la lectura de los datos de las listas de nombres de archivo línea por línea y la división en campos, consulte: BashFAQ/001

No hay ningún método fiable para leer una línea nueva lista delimitada por comas de los nombres de archivos que tengan sentido en la mayoría de circunstancias.

12voto

Corey Whitaker Puntos 665

Intente ls -l | awk '{print $7}'.

awk selecciona las columnas, así que es perfecto para esta tarea.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: