LINUX.ORG.RU

Bash чтение данных из нескольких файлов

 ,


0

1

Требуется создать цикл, который будет читать файлы из определённого каталога с определённым разрешением и считывать из них данные переменных, по одному файлу на каждую итерацию.
Своих знаний пока маловато, гугл ничего внятного не посоветовал.

Перемещено mono из talks

★★★★★
cdshines@v3700:~|⇒  for f in {1..10}; do touch $f.ext; done
cdshines@v3700:~|⇒  for file in *.ext; do ls -l $file; done
-rw-rw-r-- 1 cdshines cdshines 0 Jun 27 19:07 10.ext
...
-rw-rw-r-- 1 cdshines cdshines 0 Jun 27 19:07 9.ext

В общем, ты понял. Вместо ls -l в примере можеть свои переменные считывать.

По традиции: http://tldp.org/LDP/abs/html/

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)
Ответ на: комментарий от schizoid

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

find "$DIR" -print0 -type f -name "*.txt" |xargs -0 cat | whatever

и читать

billic ★★
()
Ответ на: комментарий от billic

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

когда-же вы манулаы начнёте читать, ламеры?!

$ for f in *; do echo "'$f'"; done
'10  20'
'3 4'
'a b c'

xargs -0 cat

почему ламеры так любят эту виртуальную кошку? Ну заведи ты себе живую, настоящую, мягкую! А эта нужна для соединения файлов, а не для того, что-бы её везде в командную строку пихать.

drBatty ★★
()
Ответ на: комментарий от drBatty

cat был в примере, на который я отвечал.

заводить отдельный цикл - конечно, куда меньшее ламерство.

чмоки.

billic ★★
()
Ответ на: комментарий от billic

заводить отдельный цикл - конечно, куда меньшее ламерство.

лучше цикл, чем цикл с рекурсией и двумя конвейерами (да ещё и с cat, что-бы совсем непонятно было, как эта НЁХ работает).

cat был в примере, на который я отвечал.

чужая глупость нуждается в повторении?

чмоки.

взаимно.

drBatty ★★
()
Ответ на: комментарий от schizoid

IFS хватит установить.

не нужно тут IFS, ты всё правильно написал. Звёздочка раскрывается ОДИН раз в N файлов, потом имена файлов на кусочки не режутся. Хоть там пробелы, хоть всё что угодно.

Вот если-бы ты писал for f in x y z t;, то это-бы раскрылось в x, y, z, t. Тоже один раз ЧСХ.

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

for i in $(ls -1 /var/log/)

Сколько можно это говно копипастить? for i in /var/log/*

anonymous
()
Ответ на: комментарий от drBatty

У меня не for, у меня while read через пайп. Там IFS=пробел будет бить входящий набор текста по пробелу. А вот ты всё правильно написал, да. Ну или через find -print0 тоже можно.

schizoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.