2015-01-06 3 views
0
-bash-4.1$ ./folder-stats-2.sh 
Top 5 files: 
    ./index.html     4000 bytes 
    ./CS133/lab1.html   3245 bytes 
    ./CS118/CW1/Ex1.java   2512 bytes 
    ./CS118/CW2/GrandFinale.java 204 bytes 
    ./.bashrc      20 bytes 

저는 bash 스크립트를 작성 중이며 스크립트가 현재 디렉토리에서 실행될 때 어떻게 상위 5 개 파일을 찾을 수 있는지 궁금합니다. 미리 감사드립니다.bash를 사용하여 아래의 형식으로 가장 큰 파일을 표시하는 방법

편집 :

du 

-a : all files 
-b : use byte as unit 

sort 

-n : sort as number 
-r : reversely 

head -6 : we take the first 6 lines, 
      because the 1st line output by `du` 
      is the total size of your directory.. 

출력 형식 : 할당과 뒤의 사용, 위치를 찾아 작업을 실현하려 어떤 재귀 명령은 위의 줄에

+0

'뒤'와 '정렬'및 머리/꼬리를 사용해보십시오. 그런 다음 형식을 지정하기 위해 awk – fredtantini

+1

을 할당 할 수 있으며 du, locate, find 및 모든 재귀 명령을 사용하여 작업을 수행 할 수 없습니다. –

+2

그러면 질문을 수정해야합니다! 또한 지금까지 시도한 것을 추가하십시오. – fredtantini

답변

2

stat, sort, 0을 사용할 수 있습니다조합 :

stat -c "%n:%F:%s" * | sort -t: -rnk3,3 | awk -F: '$2=="regular file"{ 
    printf "%25s\t%s bytes\n", $1, $3} NR>5{exit}' 
        foo.txt 639 bytes 
        bar.sh 453 bytes 
       myscript.sh 383 bytes 
        baz.pl 330 bytes 
       proc.sql 328 bytes 
  • stat -c "%n:%F:%s" 프린트는 파일명, 파일 유형 및 파일
  • sort -t: -rnk3,3 칼럼 # 3 (크기)에서 모든 라인
  • awk 명령 검색어에 역방향 수치 정렬을 위해 사용되는 크기 모든 조건 $2=="regular file" (일반 파일 만 인쇄) printf을 사용하여 서식이 지정된 출력을 인쇄합니다. NR>5{exit}은 5 행을 인쇄 한 후에 awk 프로세스를 종료합니다.
+1

이 솔루션은 멋지게 보이고 트릭을 수행하는 것처럼 보입니다. 그것이 어떻게 작동하는지 약간 설명해 주시겠습니까? 아래에있는 것과 같은 설명은 많은 도움이 될 것입니다. 그러나 시간이 없다면 문제가되지 않습니다. 고마워, –

+0

예제 출력과 같은 결과를 만들 수 없다. – Jasen

+0

@Jasen : 그것은 OP와 나를 위해 일했다.이 'Top 5 files :'제목을 의미합니까? – anubhava

2
du -ab |sort -nr|head -6 

을 사용할 수 없습니다 그 같이한다 :

777777 . 
77777 ./foo/bar 
7777 ./foo/bar/a.big 
777  ./foo/bar/b.big 
77  ./foo/bar/blah/bigfile 
7  ./other/dir/file 
+0

이 대답은 완벽하지만 사용할 수 없지만 du 나 재귀 명령을 사용할 수는 없습니다. 다른 방법이 필요해. –

0

나는 assignemnt이므로 시작할 수만 있습니다. 당신은 아마 "$의 x"는 파일, 디렉토리 또는 심볼릭 링크

  • .이고 .. 당신이
  • 을 무시하려는 것 인 경우 루프 검사에서 다음

    for x in * .* 
    

    시작하고 싶어

  • symlinks, 나는 역시 무시한다.
  • 파일의 크기를 확인하고 그 중 상위 5 개에있는 파일은
  • 개의 파일을 기억하고있다.

루프가 끝나면 결과를 인쇄하십시오.

관련 문제