첫 번째 명령의 공백이 개행 문자로 해석되는 이유를 알려주는 사람이 있나요? 에코 대신 인쇄가 사용되는 경우도 있습니다.
$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 위키에도 이 주제에 대한 좋은 정보가 있습니다.여기.
답변2
특히 IFS 전역 변수에 대해서는 쉘의 매뉴얼 페이지를 확인하십시오.
구체적으로 다음을 수행하십시오.
IFS=$(echo -en "\t\n\0")