디렉토리의 모든 확장명을 얻는 것 : 쉬움. 특정 확장자에 대한 파일 수 얻기 : 쉬움.
그러나 모든 파일 확장자와 해당 파일 수를 얻는 것은 나를 암시합니다.
예.
+ dir
+ abc.txt
+ def.txt
+ abc.pdf
* def.pov
다음과 같은 것을 반환해야합니다 :
.txt 2
.pdf 1
.pov 1
이 연습의 목적은 특정 디렉토리에서 어떤 파일 확장자가 인기가 있는지 알고 싶습니다.
미리 감사드립니다
답변
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
1 .6
1 .cache
1 .noconf
1 .php
1 .sl
2 .bin
2 .el
2 .tdb
4 .baseA
4 .baseB
4 .dat
4 .DB
27 .db
221 .deb
설명은 다음과 같습니다.
find ./ -type f
디렉토리가 아닌 파일 만 찾기
grep -E ".*\.[a-zA-Z0-9]*$"
확장자를 가진 필터 파일
sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'
경로 및 파일 이름 삭제, 확장자 만 저장
sort | uniq -c | sort -n
정렬, 유니크 및 정렬
답변
Linux (gnu grep)를 사용하고 있으므로 PCRE (Perl RE) -P
및 grep -o
옵션 을 사용하는 것이 좋습니다 . @bindbn의 답변을 훌륭한 후보로 생각하십시오.
find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n