|
|
|
#!/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 or equal 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
|