From 23beb488801520416d9dea0900021d78b8c277f6 Mon Sep 17 00:00:00 2001 From: eslopfer Date: Mon, 13 Feb 2023 18:20:46 +0000 Subject: [PATCH] feat(dir-info): add solution for exercise --- sh/tests/solutions/dir-info.sh | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 sh/tests/solutions/dir-info.sh diff --git a/sh/tests/solutions/dir-info.sh b/sh/tests/solutions/dir-info.sh new file mode 100644 index 00000000..c1b057a0 --- /dev/null +++ b/sh/tests/solutions/dir-info.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +echo "Enter directory path: " +read dir_path + +# Calculate the total size of all the files +total_size=0 +num_files=0 +for file in $(find $dir_path -type f) +do + file_size=$(stat -c%s "$file") + total_size=$((total_size + file_size)) + num_files=$((num_files + 1)) +done + +# Calculate the average size of all the files +average_size=$((total_size / num_files)) + +# Find the largest and smallest files +largest_file="" +largest_file_size=0 +smallest_file="" +smallest_file_size=99999999999 +for file in $(find $dir_path -type f) +do + file_size=$(stat -c%s "$file") + if [ $file_size -gt $largest_file_size ] + then + largest_file=$file + largest_file_size=$file_size + fi + if [ $file_size -lt $smallest_file_size ] + then + smallest_file=$file + smallest_file_size=$file_size + fi +done + +# Print the results +echo "Largest file: $largest_file ($largest_file_size bytes)" +echo "Smallest file: $smallest_file ($smallest_file_size bytes)" +echo "Average file size: $average_size bytes" + +# Print the files larger than average size +echo "Files larger or equal to average size ($average_size bytes):" +for file in $(find $dir_path -type f) +do + file_size=$(stat -c%s "$file") + if [ $file_size -ge $average_size ] + then + echo "$file $file_size" + fi +done + +# Print the files smaller than average size +echo "Files smaller than average size ($average_size bytes):" +for file in $(find $dir_path -type f) +do + file_size=$(stat -c%s "$file") + if [ $file_size -lt $average_size ] + then + echo "$file $file_size" + fi +done