답변:
당신이 시도 했습니까
ls -U | head -4
이것은 정렬을 건너 뛰어야 ls
하므로 아마도 너무 오래 걸립니다.
ls -U
는 인쇄하기 전에 반드시 전체 디렉토리를 읽을 필요는 없습니다. strace -e getdents,write ls -U > /dev/null
예를 들어 큰 디렉토리에서 시도하십시오 .
사용중인 버전에 GNU lsls
와 같은 파일을 정렬하지 않는 방법이 있으면이를 사용하십시오. 옵션이 없으면 먼저 모든 파일을 읽은 다음 이름을 정렬 한 다음 인쇄를 시작합니다.-U
ls
또 다른 가능성은 find
이름을 찾을 때 인쇄 하는 run 입니다.
find . -name . -o -prune | head
( line 에서 head
작업 하므로 파일 이름에 줄 바꿈 문자가 포함되지 않는다고 가정 함).
find
busybox 또는 heirloom find
또는 GNU 와 달리 GNU의 경우 ls -U
인쇄를 시작하기 전에 전체 디렉토리를 읽는 것으로 보입니다.
아마도 당신은 이외의 도구가 필요 ls
합니까?
예를 들어, Randal Schwartz에는 필요에 맞는 것을 구축하는 데 도움이 되는 큰 디렉토리에서 사용하는 방법 perl
에 대한 블로그 항목 이 있습니다.
랜달을 게시 블로그에 둘 것을 설명 ls
과 find
그동안 시도가 어떤을 인쇄하기 전에 모든 디렉토리 항목을 읽어 올 perl
그가 제안 솔루션을하지 않습니다.
perl
아마도 사용 readdir(3)
과 같은 ls
나 find
. readdir(3)
GNU / 리눅스의 최신 버전에 적어도 전화 않습니다 getdents()
대형과 시스템 호출 수를 (만들어지고 호출이 실제로 일반적으로 시스템의 수를 줄임으로써 성능을 최적화 않습니다를). 그러나 귀하의 경우 더 적은 파일을 원한다면 readdir
BSD getdirentries(3)
또는 getdents(2)
시스템 호출 을 우회 하여 대신 사용해야 하는 것처럼 보입니다 .
어쩌면 이하 사용자의 요구에 더 적합?
ls /usr/bin | less
저에게는 클래식 HDD가 장착 된 5 년 된 랩톱에서 즉시 작동하지만 헤드 속도도 동일합니다.
로 less
조기 종료 할 수 있습니다 q.
1s 지연의 원인에 대한 귀하의 가정이 잘못되었지만 아마도 유닉스 풍미 또는 쉘, 덜 또는 헤드 명령에 달려 있다고 생각합니다.
Linux에서 GNU-ls를 사용하면
ls -R /usr | less
전체 출력이 실행 중이고 실행 중일 때 즉시 출력을 시작합니다. 따라서 적은 수의 시작 전에 확실히 완료되지 않습니다. 출력에 따라 일정한 지연 시간이 1 초 이상인지 확인할 수 있습니다.
1 초 지연에 다른 이유가 있다고 생각합니다 .HDD가 잠 들어 깨어날 필요가 있습니까?
아주 적은 파일에 대해서도 지연이 있습니까?
ls
결과 의 결과로 less가 실행됩니다 . 결과 수량을 제한하는 방법을 찾고있었습니다.
ls -lrth | tail
ls -lrth | tail -n 10
ls -lrth | grep *.gz | tail
ls
bash에 대한 명령을 제공하는 것입니다. 파이프 같은 명령 grep
, head
, tail
또는 다른 사람은 후에 실행ls
$ cut -f 1,n filename
첫 번째 n
파일 을 가져 오는 작업을 수행 합니다.
n
추출하려는 파일 수입니다. 완전한 코드는 다음과 같습니다.
$ ls|cut -f 1,n file
ls | cut -f 1,n file
당신이 텍스트의 각 줄에 출력 제 n 번째 필드 것이라고 제안 명령 file
, 완전히의 출력을 무시합니다 ls
. 이것은 원래 포스터에 필요한 것을 수행하지 않습니다.