最初のコマンドのスペースが改行文字として解釈される理由を教えてくれる人はいますか?エコーの代わりに印刷が使用される場合もあります。
$for l in $( find *.txt -exec head -1 {} \; ); echo $l;
2011年9月16日 09:20 2011年9月19日 18.41 2011年9月21日 07:15
$find *.txt -exec head -1 {} \;
9.16.11 09:20 9.19.11 18.41 9.21.11 07:15
答え1
コマンド置換はIFSに従って出力をトークン化します。特に、この場合は空間的に分割されます。解析されていない出力find
。代わりに、以下を実行してください。
for file in *.txt; do
head -1 "${file}"
done
Wooledge Wikiにもこのトピックに関する良い情報があります。ここ。
答え2
特にIFSグローバル変数については、シェルのマニュアルページを確認してください。
具体的には、次のようにします。
IFS=$(echo -en "\t\n\0")