하나가 실행될 때
ls | head
head는 화면에 인쇄하기 전에 파이프된 명령의 전체 출력을 기다리는 것 같습니다. 수백만 개의 파일이 포함된 디렉터리에서 ls를 실행하는 경우와 같이 명령을 실행하는 데 매우 오랜 시간이 걸릴 경우 이는 바람직하지 않습니다.
그러나 하나가 실행될 때
find | head
head는 화면에 인쇄를 시작하기 전에 전체 출력을 기다리지 않습니다. 실시간으로 나타나는 것처럼 인쇄를 수행합니다.
내 질문은 이것입니다: 이러한 동작 차이를 유발하는 find와 ls의 차이점은 무엇입니까? 둘째, 긴 디렉토리 목록의 헤드를 즉시 가져올 수 있는 대체 명령(ls 또는 head)이 있습니까?
답변1
head
그것은 님의 잘못 이 아닙니다 . 그것은 ls
입니다.
ls
거의 항상 출력을 정렬합니다(기본적으로 이름순, 요청 시 날짜순). 그리고 모든 종류의 특성상 전체 입력을 읽을 때까지 출력을 생성할 수 없습니다.
find
출력을 정렬하지 않으므로 더 빠르게 생산을 시작할 수 있습니다.
간단히 실행하면 이를 직접 확인할 수 있습니다.
ls
그리고
find
응답 시간의 차이를 관찰합니다.
ls
그런데, 를 지정하면 정렬하지 않고 디렉토리 목록을 얻을 수 있습니다 -U
.