2015-08-24 2 views
-2

Мне нужны все файлы в любом конкретном каталоге (/ home/docs /) с подсчетом каждого из таких файлов, классифицированных по их расширениям.список всех файлов с расширениями в каталоге и подсчет количества таких файлов в Unix

Результат должен быть, как:

 
.mp3 - 10 
.ksh - 15 
.doc - 20 
.xls - 3 

т.д.

ответ

1

Я хотел бы сделать:

ls -1|awk -F'.' 'NF>1{a[$NF]++}END{for(x in a)print x,a[x]}' 

это позволит исключить каталоги и имя файла без dot, а также с использованием одного awk.

+0

Thanks Kent. Это точный результат, который я хотел. –

1
ls | awk -F . '{print $NF}' | sort | uniq -c | awk '{print $2,$1}' 
+0

он плохо справляется с именами файлов с пробелами –

0
$ find . -name "*?.*" -type f -printf "%f\0" | xargs -0 -I"--" sh -c 'fn="--" ; echo "${fn##*.}"' | sort | uniq -c | awk '{print $2,"-",$1}' 
+0

Возможно, вы захотите объяснить эту длинную команду, чтобы ее было легче понять. – Tunaki

Смежные вопросы