最初のコマンドのスペースが改行として解釈されるように見える理由について、誰かが私に教えてくれませんか?また、echoの代わりにprintを使用することもあります。
$for l in $( find *.txt -exec head -1 {} \; ); echo $l;
9.16.11 09:20 9.19.11 18.41 9.21.11 07: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に基づいて、出力でWord分割を引き起こします。具体的には、この場合はスペースで分割されます。 find
の出力を解析しないでください。代わりに、これを行います。
for file in *.txt; do
head -1 "${file}"
done
Wooledge wikiには、この問題に関するいくつかの良い情報もあります ここ 。