LINUX.ORG.RU

Вывод файлов и нумерация

 


0

1

Как через терминал вывести названия всех файлов из директории и пронумеровать их?

Чтобы получилось на выходе:

  1. авыав.avi
  2. fsdfdsf.bin
  3. pisechki.tar


Последнее исправление: nickpo (всего исправлений: 2)

Ответ на: комментарий от vodz

Да, но нет

pve ~/tmp # ls|wc -l
80119
pve ~/tmp # time  { n=0; for i in *; do echo $((++n)). "$i"; done; } > /dev/null

real    0m0.414s
user    0m0.412s
sys     0m0.000s
pve ~/tmp # time { ls|nl -s". "; } > /dev/null

real    0m0.131s
user    0m0.084s
sys     0m0.048s

Вообще не самый грустный пример, вот «cat|while read...» это настоящий эпический трэш по производительности.

anonymous
()
Ответ на: Да, но нет от anonymous

Кстати, если echo окажется внешней командой, то будет ещё намного медленнее.

anonymous
()
Ответ на: Да, но нет от anonymous

Занятно, что у меня echo получилось в два раза всего увеличивает время выполнения, если в цикле поставить что-то тупое, типа a=$i. То есть тормозит не вызов syscall, а сам bash. Кто-бы сомневался... Ещё более солидное доказательство будет если в цикл засунуть формирование вывода в переменную для одного вызова echo, типа для начала как out=«$out $((++n). $i». Боже мой - оно в 10 раз тормознее стало.

Справедливости ради, замена на спец утилиты хорошо только тогда, когда вас это полностью устраивает. Ибо шаг в сторону от первоначального ТЗ - и приплыли, всё равно программить.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.