user2005383
user2005383

Reputation: 41

How can I count the different file types within a folder using linux terminal?

Hey I'm star struck on how to count the different amounts of file types / extensions recursively in a folder. I also need to print them to a .txt file.

For example I have 10 txt's 20 .docx files mixed up in multiple folders.

Help me !

Upvotes: 4

Views: 2243

Answers (3)

KJS
KJS

Reputation: 1214

this one seems unsolved so far, so here is how far I got counting files and ordering them:

find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic

Upvotes: 0

glenn jackman
glenn jackman

Reputation: 247012

Just with bash: version 4 required for this code

#!/bin/bash
shopt -s globstar nullglob
declare -A exts

for f in * **/*; do
    [[ -f $f ]] || continue     # only count files
    filename=${f##*/}           # remove directories from pathname
    ext=${filename##*.}
    [[ $filename == $ext ]] && ext="no_extension"
    : ${exts[$ext]=0}           # initialize array element if unset
    (( exts[$ext]++ ))
done

for ext in "${!exts[@]}"; do
    echo "$ext ${exts[$ext]}"
done | sort -k2nr | column -t

Upvotes: 1

Tobias Snoad
Tobias Snoad

Reputation: 330

find ./ -type f |awk -F . '{print $NF}' | sort | awk '{count[$1]++}END{for(j in count) print j,"("count[j]" occurences)"}'

Gets all filenames with find, then uses awk to get the extension, then uses awk again to count the occurences

Upvotes: 9

Related Questions