Итерация по каждой строке ls-l вывод

Я хочу выполнить итерации по каждой строке в выводе: ls -l /some/dir/*

Прямо сейчас я пробую: for x in $(ls -l $1); do echo $x; done

Однако это выполняет итерации по каждому элементу в строке отдельно, таким образом, я добираюсь:

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:07
File1

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:17
File2

Но я хочу выполнить итерации по каждой строке в целом, все же. Как я делаю это?

114
задан Damian T. 22 November 2019 в 06:31
поделиться

5 ответов

Установите IFS на новую строку, например:

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

Поместите вокруг него вспомогательную оболочку, если вы не хотите устанавливать IFS постоянно:

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

Или используйте while | вместо этого прочтите:

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

Еще одна опция, которая запускает while / read на том же уровне оболочки:

while read x; do echo $x; done << EOF
$(ls -l $1)
EOF
237
ответ дан 24 November 2019 в 02:32
поделиться

Как уже упоминалось, для этого подходит awk. Если вы не хотите использовать awk, вместо анализа вывода «ls -l» построчно, вы можете перебрать все файлы и выполнить «ls -l» для каждого отдельного файла следующим образом:

for x in * ; do echo `ls -ld $x` ; done
3
ответ дан 24 November 2019 в 02:32
поделиться

Это зависит от того, что вы хотите делать с каждой строкой. awk - полезная утилита для этого типа обработки. Пример:

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

.. в моей системе печатается имя и размер каждого элемента в каталоге.

6
ответ дан 24 November 2019 в 02:32
поделиться

Утилита read (1) вместе с перенаправлением вывода команды ls (1) будет делать то, что вы хотите.

1
ответ дан 24 November 2019 в 02:32
поделиться

Вы также можете попробовать команду find . Если вам нужны файлы только в текущем каталоге:

find. -d 1 -prune -ls

Выполнить команду для каждого из них?

find. -d 1 -prune -exec echo {} \;

Считать строки, но только в файлах?

найти. -d 1 -prune -type f -exec wc -l {} \;

3
ответ дан 24 November 2019 в 02:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: