Nhận danh sách các kết thúc tệp riêng biệt trong một thư mục (UNIX shell)


1

Tôi có một thư mục với nhiều tập tin hình ảnh ở các định dạng khác nhau. Tôi muốn xem một danh sách tất cả các kết thúc tập tin riêng biệt trong thư mục đó, để tôi có thể thấy loại định dạng hình ảnh nào hiện diện. Vì vậy, giả định sẽ có chỉ png, gifjpgtác phẩm, đầu ra mong muốn của tôi sẽ như thế nào:

png
gif
jpg

Tôi biết cách lấy danh sách tất cả các kết thúc tệp bằng cách sử dụng lscut, nhưng tôi không biết làm thế nào để chỉ chứa các mục duy nhất. Có cách nào để làm điều này chỉ bằng các công cụ shell hay tôi phải viết một tập lệnh python nhỏ hoặc tương tự?

Câu trả lời:


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

Nếu bạn muốn biết có bao nhiêu loại mỗi loại:

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

Tuyệt vời, không biết gì về uniqcông cụ này - chính xác là những gì tôi đang tìm kiếm!
lethal-guitar

+1 nhưng đây là trường hợp awk quá mức cần thiết; bạn có thể đạt được điều tương tự với for f in ./*.*; do echo "${f##*.}"; done | sort | uniq -c(cũng vậy, một ống ít hơn)
evilsoup

0

Luôn có một cách.

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]++ }'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.