Кто-то хочет рассказать мне, почему пробелы в первой команде кажутся интерпретированными как разрывы строк? Также происходит замена печати для эха.
$for l in $( find *.txt -exec head -1 {} \; ); echo $l;
9.16.11 9:20 9.19.11 18,41 9.21.11 7:15
$find *.txt -exec head -1 {} \;
9.16.11 09:20 9.19.11 18.41 9.21.11 07:15
Посмотрите справочную страницу для вашей оболочки, ориентируясь именно на глобальную переменную IFS.
В частности, сделайте следующее:
IFS=$(echo -en "\t\n\0")
Ваша подстановка команды вызывает разбиение слова на его выходе, основанное на IFS. В частности, в этом случае он расщепляется на пространства. Не разбирайте результат find
. Вместо этого сделайте следующее:
for file in *.txt; do head -1 "${file}" done
Здесь также есть полезная информация о Wooledge wiki.