답변:
이 시도:
find . -type f | sed -rn 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u
다음에 대해서는 아무것도 출력하지 않습니다.
에 파이프하는 것이 유용 할 수도 있습니다 sort | uniq -c
.
-E
대신 사용하십시오 -r
find . -type f | sed -E 's/.+[\./]([^/\.]+)/\1/' | sort -u
확장자가없는 파일을 제외하고 OS X에서 작동합니다. 내 다운로드 폴더 :
DS_Store
dmg
exe
localized
msi
nib
plist
pmproj
rar
tgz
txt
webloc
zip
sed -r
대신 필요 할까요?
사소한 문제 : 확장자가없는 파일은 이름을 인쇄합니다. 숨겨진 파일 (예 :)은 .DS_Store
선행없이 이름을 인쇄합니다 .
.
sort -u
대신에 권장 합니다 sort | uniq
. 적은 포크 및 리소스 사용.
[]
.
다음은 포함 된 개행 문자가 포함 된 파일 이름으로 혼동되지 않고 개행 문자가 포함 된 sort -uz
파일 확장자를 올바르게 정렬하는 데 사용 되는 또 다른 솔루션입니다 .
# [^.]: exclude dotfiles
find . -type f -name "[^.]*.*" -exec bash -c '
printf "%s\000" "${@##*.}" # get the extensions and nul-terminate each of them
' argv0 '{}' + |
sort -uz |
tr '\0' '\n' |
nl
sed: illegal option -- r