GNU/Linux >> Tutoriales Linux >  >> Linux

Iterando sobre cada línea de salida ls -l

Establezca IFS en nueva línea, así:

IFS='
'
for x in `ls -l $1`; do echo $x; done

Coloque una subcapa a su alrededor si no desea configurar IFS de forma permanente:

(IFS='
'
for x in `ls -l $1`; do echo $x; done)

O use while | leer en su lugar:

ls -l $1 | while read x; do echo $x; done

Una opción más, que ejecuta while/read en el mismo nivel de shell:

while read x; do echo $x; done << EOF
$(ls -l $1)
EOF

Como ya se mencionó, awk es la herramienta adecuada para esto. Si no quiere usar awk, en lugar de analizar la salida de "ls -l" línea por línea, puede iterar sobre todos los archivos y hacer un "ls -l" para cada archivo individual como este:

for x in * ; do echo `ls -ld $x` ; done

Depende de lo que quieras hacer con cada línea. awk es una utilidad útil para este tipo de procesamiento. Ejemplo:

 ls -l | awk '{print $9, $5}'

.. en mi sistema imprime el nombre y el tamaño de cada elemento en el directorio.


Linux
  1. ¿Cómo recorrer las líneas de un archivo?

  2. ¿Contar los caracteres de cada línea con Wc?

  3. ¿Cómo matar la línea de comando de Chromium sobre Ssh?

  4. ¿Cómo analizar cada línea de un archivo de texto como un argumento para un comando?

  5. Agregue una cadena de prefijo al comienzo de cada línea

Lolcat:una herramienta de línea de comandos para generar Rainbow Of Colors en la terminal de Linux

Agregar salto de línea a la salida del comando

Prefijo para cada salida de un comando en tiempo de ejecución

Línea de comando:Extraer subcadena de la salida

Tubería/Mezcla de entrada de línea a salida en PulseAudio

Un comando para mostrar cada línea hacia adelante y luego hacia atrás