2010-01-11 3 views
3
#!/bin/sh 
find ${*-.} -type f -print | xargs file | 
awk '{ 
$1=NULL; 
t[$0]++; 
} 
end { 
for (i in t) printf("%d\t%s\n", t[i], i); 
}' | sort -nr 

첫 번째 "찾기"행이 작동합니다. 그러나 awk 부분은 작동하지 않습니다. 파일 유형 수를 내림차순으로 정렬합니다. AWK의awk로 계산 됨

awk ' { 

일부 버전이 필요합니다 "종료"해야한다 "END"

+1

나는'$ {* -.} -type f -print0 | xargs -0 file |'파일 이름에 공백이있을 경우를 대비하여. –

+0

@Dennis, 나는 동의한다. 그러나 그것은 GNU find와 xargs이다. –

답변

11

AWK는 대소 문자를 구분합니다.

0

시도 진드기와 { 사이에 공백을 추가하는 -

+0

정말요? 어떤 버전? –

+0

나는 1992 년부터 HP-UX에서 이것을 기억한다. –

2

END이 아닌 end을 사용하십시오.