Your branch is up to date with 'origin/rewrite-2022-03-26'. Changes to be committed: modified: hash-files Cleaning up comment lines
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 () {
 | 
						|
## Use on systems managed with systemd
 | 
						|
#	printf 'hash-files:	%s\n' "$1" | systemd-cat
 | 
						|
	printf '%s	hash-files:	%s\n' "$DateTimeStamp" "$1" >> $log_file
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
mdls_per_file () {
 | 
						|
	file=$1
 | 
						|
	unset mdls_properties
 | 
						|
	for line in $(mdls $file); do
 | 
						|
		old_IFS=$IFS
 | 
						|
		unset IFS
 | 
						|
		mdls_key=$(printf "%s" $line | cut -d '=' -f 1)
 | 
						|
		mdls_value=$(printf "%s" $line | cut -d '=' -f 2)
 | 
						|
		if [[ " ${keys_of_interest[*]} " =~ " ${mdls_key} " ]];then
 | 
						|
			IFS=$old_IFS
 | 
						|
			mdls_properties+=( $mdls_value )
 | 
						|
			unset IFS
 | 
						|
		else
 | 
						|
			: # "Did not print!"
 | 
						|
		fi
 | 
						|
		IFS=$old_IFS
 | 
						|
	done
 | 
						|
	IFS=',';echo "${mdls_properties[*]}";IFS=$old_IFS
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
write_per_file () {
 | 
						|
# "=== Write data to a .csv file. ===
 | 
						|
#===================================="
 | 
						|
#	cat $temp_csv_file
 | 
						|
#	write_log "$temp_csv_file written successfully."
 | 
						|
printf 'File: %s\nHash: %s\nMDLS Properties:\t%s\n' $1 $2 $3
 | 
						|
}
 | 
						|
 | 
						|
cleanup () {
 | 
						|
	write_log "Cleanup completed successfully."
 | 
						|
}
 | 
						|
 | 
						|
## Main
 | 
						|
#######
 | 
						|
 | 
						|
trap cleanup EXIT
 | 
						|
 | 
						|
## Create temp file
 | 
						|
temp_csv_file=$($mktemp_bin)
 | 
						|
## Initialize column names
 | 
						|
csv_columns=( "File Path" "File Hash" )
 | 
						|
## Populate Columns from keys of interest
 | 
						|
for key in ${keys_of_interest[@]};do
 | 
						|
	csv_columns+=( $key )
 | 
						|
done
 | 
						|
## Print columns to first line of csv
 | 
						|
# "======= CSV Column Headers ========"
 | 
						|
{ IFS=',';echo "${csv_columns[*]}";IFS=$'\n'
 | 
						|
## Loop through files, writing to csv
 | 
						|
for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
 | 
						|
	## Set our hash value
 | 
						|
	hash=$($md5_bin $file | awk '{ print $4 }')
 | 
						|
#	Print csv row output
 | 
						|
#	"============= CSV Row =========="
 | 
						|
	echo "$file,$hash,$(mdls_per_file $file)"
 | 
						|
#	write_per_file $file $hash $mdls_properties
 | 
						|
done	
 | 
						|
} >> $temp_csv_file
 | 
						|
cat $temp_csv_file
 | 
						|
unset IFS
 |