I'm using the following function to find duplicates in a list of hash codes:
delete_duplicates() {
let deleted_files=0
echo "deleted_files $deleted_files"
while read dup; do
let count=1
grep "$dup" $1 | while read file_hash; do
if [[ $count -eq 1 ]]; then
let count++
continue
else
file="$(echo "$file_hash" | cut -d ' ' -f 3-)"
rm "$file"
if [[ $? != 0 ]]; then
echo "Error deleting the file $file"
exit 1
fi
echo $deleted_files
let deleted_files++
fi
done
done < $2
echo "${deleted_files} files have been deleted"
}
The part where I call this function is:
get_hash_list > $hash_list
get_duplicates $hash_list > $duplicates
delete_duplicates $hash_list $duplicates
The inputs for the function are temp files.
I want to count the number of deleted files, but adding with let
doesn't work as expected. The output is the following:
$ bash duplicateFinder.sh
deleted_files 0
0
1
2
3
0
1
2
3
...
0 files have been deleted
Is like the variable deleted_files
is being redeclared every N files deleted.
I've tried adding 1 with let deleted_files++
and with let deleted_files+=1