Schreibe mir ein bash-script um die ältesten Dateien und Unterordner, innerhalb eines ausgewählten Ordners zu löschen. Das Skript soll mit der jeweils ältesten Datei beginnen und dies so lange wiederholen bis der gewählte Ordner kleiner als 10 GB ist.
Hier ist ein Bash-Skript, das Ihre Anforderungen erfüllt:


#!/bin/bash

# Set the target folder size limit
limit=10485760 # 10 GB in KB

# Prompt the user to enter the target folder
read -p Enter the path of the target folder:  folder

# Check if the entered folder exists
if [ ! -d $folder ]; then
  echo Error: The specified folder does not exist.
  exit 1
fi

# Calculate the current size of the folder
size=$(du -s $folder | awk '{print $1}')

# Loop until the folder size is less than the limit
while [ $size -gt $limit ]; do
  # Find the oldest file in the folder
  oldest=$(find $folder -type f -printf '%T@ %p\n' | sort -n | head -1 | cut -d' ' -f2)
  # Delete the oldest file
  rm $oldest
  # Recalculate the folder size
  size=$(du -s $folder | awk '{print $1}')
done

# Find the oldest subfolder in the folder
oldest=$(find $folder -type d -printf '%T@ %p\n' | sort -n | head -1 | cut -d' ' -f2)
# Delete the oldest subfolder
rm -r $oldest

echo The folder is now smaller than $limit KB.


Dieses Skript verwendet den Befehl du (disk usage), um die Größe des Zielordners zu berechnen, und den Befehl find zur Suche nach den ältesten Dateien und Unterordnern. Der Befehl sort und head werden verwendet, um die älteste Datei oder den ältesten Unterordner zu finden. Schließlich wird die älteste Datei oder der älteste Unterordner mit rm bzw. rm -r gelöscht.

Verwenden Sie dieses Skript auf eigene Gefahr und stellen Sie sicher, dass Sie eine Backup-Kopie aller Daten haben, die Sie löschen möchten.