#!/usr/bin/env bash declare -A all_modules # 0 module is used 1 module is not used for i in $(find /lib/modules/$(uname -r) -type f -name '*.ko*'); do module_name=$(basename $i); module_without_extension=$(echo $module_name | cut -f 1 -d '.') module_name_normalized=$(echo $module_without_extension | sed 's/-/_/g') all_modules[$module_name_normalized]=1 done IFS=$'\n' for i in $(lsmod | sed '1d;$d'); do module_name=$(echo $i | awk '{print $1}') echo "$module_name" if [[ -v all_modules[$module_name] ]]; then all_modules[$module_name]=0 else echo "Warning! There is no $module_name module in all_modules array - adding it to all modules but you should check" all_modules[$module_name]=0 fi done for i in "${!all_modules[@]}" do if [ ${all_modules[$i]} -eq 0 ]; then echo "$i is loaded" else echo "$i is not used" fi done