#!/usr/bin/env bash log_file=/var/log/hash-files.log keys_of_interest=("kMDItemFSCreationDate" "kMDItemFSName") md5_bin=$(which md5sum) mktemp_bin=$(which mktemp) DateTimeStamp=$(date +\%D_\%T) IFS=$'\n' set -a source .env 2>&1 > /dev/null set +a ## Functions ############ write_log () { #echo " ++ Write to log. # +++++++++++++++" ## Use on systems managed with systemd # printf 'hash-files: %s\n' "$1" | systemd-cat printf '%s hash-files: %s\n' "$DateTimeStamp" "$1" >> $log_file } create_list_of_files () { #echo "=== Get list of files in $Working_Directory. === #==================================================" for file in $(find $Working_Fullpath -maxdepth 1 -type f); do list_of_files+=( $file ) done write_log "List of files created successfully." } mdls_files () { for file in $list_of_files; do for line in $(mdls $file); do mdls_key=$(printf "%s" $line | cut -d '=' -f 1) mdls_value=$(printf "%s" $line | cut -d '=' -f 2) if $(echo $keys_of_interest | grep $mdls_key);then printf "\n============================\nMDLS Key: %s\nMDLS Value: %s\n============================\n\n" $mdls_key $mdls_value else echo "Did not print!" fi done done } hash_files () { #echo "=== Hash files. === #======================" for file in ${list_of_files[@]}; do hash=$($md5_bin $file | awk '{ print $1 }') list_of_hashes+=( $hash ) done write_log "Files hashed successfully." } create_csv () { #echo "=== Create array of comma-separated-values. === #==================================================" for i in ${!list_of_files[@]}; do csv_array+=( ${list_of_files[i]},${list_of_hashes[i]} ) done export csv_array write_log "CSV Array creation successful." } write_data () { #echo "=== Write data to a .csv file. === #====================================" temp_csv_file=$($mktemp_bin) printf '%s,%s\n' "File Path" "File Hash" >> $temp_csv_file for line in ${csv_array[@]};do printf '%s\n' $line done >> $temp_csv_file # cat $temp_csv_file write_log "$temp_csv_file written successfully." } cleanup () { write_log "Cleanup completed successfully." } ## Main ####### trap cleanup EXIT echo "Main Start" create_list_of_files mdls_files #hash_files #if [ ${#list_of_files[@]} != ${#list_of_hashes[@]} ];then # echo "Error! Number of files and hashes differs. Exiting..." && exit #else # create_csv #fi #write_data #while $list_of_files >=1; do #done unset IFS