Yanıtlar:
Bunu dene:
find . -type f | sed -rn 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u
Şunun için hiçbir şey çıktı:
Ayrıca boruya bağlamak da yararlı olabilir sort | uniq -c
.
-E
yerine kullanın -r
.
find . -type f | sed -E 's/.+[\./]([^/\.]+)/\1/' | sort -u
Uzantısı olmayan dosyalar dışında OS X üzerinde çalışır. İndirilenlerim klasörü:
DS_Store
dmg
exe
localized
msi
nib
plist
pmproj
rar
tgz
txt
webloc
zip
Bunun sed -r
yerine ihtiyacınız olabilir mi?
Küçük sorun: Uzantısı olmayan dosyalar adlarını yazdırır. Gizli dosyalar (örneğin .DS_Store
) önde gelmeden adlarını yazdırır .
.
sort -u
yerine sort | uniq
. Daha az çatal ve kaynak kullanımı.
[]
.
Aşağıda, gömülü yeni satırlar içeren dosya adlarıyla karıştırılmayan ve gömülü yeni satırlara sort -uz
sahip olabilecek dosya uzantılarını doğru bir şekilde sıralamak için kullanılan başka bir çözüm daha vardır :
# [^.]: 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