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?

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

Ś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]++ }'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.