これがあなたの要件を満たすバッシュスクリプトです：


＃！/bin/bash

＃ターゲットフォルダーのサイズ制限を設定します
LIMIT = 10485760＃10 GB KB

＃ユーザーにターゲットフォルダーを入力するように求めます
read -p "ターゲットフォルダーのパスを入力："フォルダー

＃入力されたフォルダーが存在するかどうかを確認します
もしも [！-d "$ folder"];それか
  エコー「エラー：指定されたフォルダーは存在しません。」
  終了1
fi

＃フォルダーの現在のサイズを計算します
size = $（du -s "$ folder" | awk '{print $ 1}'）

＃フォルダのサイズが制限よりも小さいまでループ
while [$ size -gt $ lime];する
  ＃フォルダー内の最古のファイルを見つけます
  ownest = $（ "$ folder" -type f -printf '％t@％p \ n' | sort -n | head -1 | cut -d '' -f2）
  ＃最古のファイルを削除します
  rm "$ ownest"
  ＃フォルダーサイズを再計算します
  size = $（du -s "$ folder" | awk '{print $ 1}'）
終わり

＃フォルダー内の最古のサブフォルダーを見つけます
oldest = $（ "$ folder" -type d -printf '％t@％p \ n' | sort -n | head -1 | cut -d '' -f2）
＃最古のサブフォルダーを削除します
rm -r "$ oldest"

エコー「フォルダは、$ limit kbbよりも小さいようになりました。」


このスクリプトは、コマンド（ディスク使用）を使用してターゲットフォルダーのサイズを計算し、最古のファイルとサブフォルダーを検索するためのコマンドを見つけます。ソートアンドヘッドコマンドは、最古のファイルまたは最古のサブフォルダーを見つけるために使用されます。最後に、RMまたはRM -Rを備えた最古のファイルまたは最古のサブフォルダーが削除されます。

このスクリプトを自分の責任で使用し、削除するすべてのデータのバックアップコピーがあることを確認してください。
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.