Scripts/disk_cleanup_linux
2025-06-14 08:54:00 +00:00

83 lines
2.4 KiB
Bash

#!/bin/bash
# wget -O /tmp/disk_cleanup_linux.sh https://git.technozone.com.au/vijay/Scripts/raw/branch/main/disk_cleanup_linux && bash /tmp/disk_cleanup_linux.sh && rm -f /tmp/disk_cleanup_linux.sh
# Function to list directories
list_directories() {
local dir=$1
echo "Listing directories under: $dir"
du -h --max-depth=1 "$dir" 2>/dev/null | sort -hr
}
# Function to delete a directory
delete_directory() {
local dir_to_delete=$1
echo "Are you sure you want to delete the directory: $dir_to_delete? (y/n)"
read -r confirmation
if [[ $confirmation == "y" ]]; then
rm -rf "$dir_to_delete"
echo "Deleted: $dir_to_delete"
else
echo "Deletion cancelled."
fi
}
# Function to list largest files in a directory
list_largest_files() {
local dir=$1
echo "Listing largest files in: $dir"
find "$dir" -type f -exec du -h {} + | sort -hr | head -n 10
}
# Function to display the menu
display_menu() {
echo "Menu Options:"
echo "1. List directories"
echo "2. Delete a directory"
echo "3. Dig into a directory to find largest files"
echo "4. Quit"
}
# Main function to manage disk cleanup
disk_cleanup() {
local current_dir="/home"
while true; do
display_menu
read -r choice
case $choice in
1)
list_directories "$current_dir"
;;
2)
echo "Enter the directory path to delete (relative to $current_dir):"
read -r user_input
if [[ -d "$current_dir/$user_input" ]]; then
delete_directory "$current_dir/$user_input"
else
echo "Invalid directory. Please try again."
fi
;;
3)
echo "Enter the directory path to dig into (relative to $current_dir):"
read -r user_input
if [[ -d "$current_dir/$user_input" ]]; then
list_largest_files "$current_dir/$user_input"
else
echo "Invalid directory. Please try again."
fi
;;
4)
echo "Exiting..."
break
;;
*)
echo "Invalid option. Please try again."
;;
esac
done
}
# Start the disk cleanup process
disk_cleanup