Uzyskaj listę różnych zakończeń plików w katalogu (powłoka UNIX)

1

Mam katalog z wieloma plikami obrazów w różnych formatach. Chciałbym zobaczyć listę wszystkich różnych zakończeń plików w tym katalogu, dzięki czemu mogę zobaczyć, jakie formaty obrazów są obecne. Więc zakładając, że byłoby tylko png, gifa jpgpliki, mój sygnał wyjściowy będzie wyglądać następująco:

png
gif
jpg

Wiem, jak uzyskać listę wszystkich zakończeń plików za pomocą lsi cut, ale nie wiem, jak zrobić, aby zawierały tylko unikalne wpisy. Czy istnieje sposób, aby to zrobić przy użyciu tylko narzędzi powłoki, czy muszę napisać mały skrypt Python lub podobny?

śmiertelna gitara
źródło

Odpowiedzi:

7
$ ls *.* | nawk -F\. '{print $(NF);}' | sort | uniq

Jeśli chcesz wiedzieć, ile każdego typu:

$ ls *.* | nawk -F\. '{print $(NF);}' | sort | uniq -c
David
źródło
Świetnie, nie wiedziałem o uniqnarzędziu - dokładnie tego szukałem!
śmiertelna gitara
+1, ale w tym przypadku awk to przesada; można to samo osiągnąć for f in ./*.*; do echo "${f##*.}"; done | sort | uniq -c(także o jedną rurkę mniej)
evilsoup
0

Zawsze jest rozwiązanie.

function alsoHidden {
    find . -maxdepth 1 -type f -printf '%f\n';
}
$ alsoHidden | sed -E 's/.*\.(.*)/\1/' | sort -u

$ alsoHidden | tr . / | xargs -I% basename % | sort -u

$ alsoHidden | awk -F. ' !a[$NF] { print $NF; a[$NF]++ }'
Ярослав Рахматуллин
źródło