Supprimer Fichiers par Taille sur macOS
Apprenez à trouver et supprimer les gros fichiers sur Mac basés sur des critères de taille. Cela aide à libérer de l'espace de stockage et améliorer les performances de l'appareil quand le stockage devient faible.
Lister les Gros Fichiers
Trouvez et listez les fichiers plus grands qu'une taille spécifiée :
#!/bin/bash
# Obtenir le contexte utilisateur actuel
CURRENT_USER=$(stat -f "%Su" /dev/console)
CURRENT_USER_UID=$(id -u "$CURRENT_USER")
# Configuration
SEARCH_PATH="/Users/$CURRENT_USER/Desktop"
SIZE_LIMIT="100" # Taille en kilooctets
echo "Recherche de fichiers plus grands que ${SIZE_LIMIT}KB dans : $SEARCH_PATH"
# Lister les gros fichiers
launchctl asuser $CURRENT_USER_UID sudo -iu "$CURRENT_USER" \
find "$SEARCH_PATH" -type f -size +${SIZE_LIMIT}k -print
Supprimer les Gros Fichiers
Trouvez et supprimez les fichiers plus grands qu'une taille spécifiée :
#!/bin/bash
# Obtenir le contexte utilisateur actuel
CURRENT_USER=$(stat -f "%Su" /dev/console)
CURRENT_USER_UID=$(id -u "$CURRENT_USER")
# Configuration
SEARCH_PATH="/Users/$CURRENT_USER/Downloads"
SIZE_LIMIT="50" # Taille en kilooctets
echo "⚠️ ATTENTION : Ceci supprimera définitivement les fichiers plus grands que ${SIZE_LIMIT}KB"
echo "Recherche dans : $SEARCH_PATH"
# Lister et supprimer les gros fichiers
launchctl asuser $CURRENT_USER_UID sudo -iu "$CURRENT_USER" \
find "$SEARCH_PATH" -type f -size +${SIZE_LIMIT}k -print -delete
echo "✅ Gros fichiers supprimés avec succès"
Script de Nettoyage Amélioré
Script avec vérifications de sécurité et rapport détaillé :
#!/bin/bash
# Fonction pour nettoyer les gros fichiers en toute sécurité
cleanup_large_files() {
local search_path="$1"
local size_limit="$2"
local dry_run="${3:-false}"
# Obtenir le contexte utilisateur actuel
local current_user=$(stat -f "%Su" /dev/console)
local current_user_uid=$(id -u "$current_user")
if [[ ! -d "$search_path" ]]; then
echo "❌ Erreur : Répertoire non trouvé : $search_path"
return 1
fi
echo "=== Nettoyage Gros Fichiers ==="
echo "📁 Chemin : $search_path"
echo "📏 Limite taille : ${size_limit}KB"
echo "👤 Utilisateur : $current_user"
echo "🔍 Test à sec : $dry_run"
echo "==============================="
# Trouver les gros fichiers
local files_command="find '$search_path' -type f -size +${size_limit}k"
if [[ "$dry_run" == "true" ]]; then
echo "📋 Fichiers qui seraient supprimés :"
launchctl asuser $current_user_uid sudo -iu "$current_user" \
bash -c "$files_command -ls"
local count=$(launchctl asuser $current_user_uid sudo -iu "$current_user" \
bash -c "$files_command | wc -l")
echo "📊 Total fichiers trouvés : $count"
else
echo "🗑️ Suppression des gros fichiers..."
launchctl asuser $current_user_uid sudo -iu "$current_user" \
bash -c "$files_command -print -delete"
echo "✅ Nettoyage terminé"
fi
}
# Configuration
SEARCH_PATH="/Users/$(stat -f "%Su" /dev/console)/Downloads"
SIZE_LIMIT="100"
DRY_RUN="true" # Définir à "false" pour supprimer réellement les fichiers
# Exécuter le nettoyage
cleanup_large_files "$SEARCH_PATH" "$SIZE_LIMIT" "$DRY_RUN"
Gestion de Stockage Entreprise
Nettoyage de stockage complet pour environnements d'entreprise :
#!/bin/bash
# Configuration nettoyage stockage entreprise
CLEANUP_LOCATIONS=(
"/Users/*/Downloads:50"
"/Users/*/Desktop:100"
"/Users/*/Documents:200"
"/tmp:10"
)
# Fonction pour formater la taille des fichiers
format_size() {
local size=$1
if [[ $size -gt 1048576 ]]; then
echo "$(( size / 1048576 ))GB"
elif [[ $size -gt 1024 ]]; then
echo "$(( size / 1024 ))MB"
else
echo "${size}KB"
fi
}
# Fonction pour obtenir la taille du répertoire
get_directory_size() {
local dir="$1"
if [[ -d "$dir" ]]; then
du -sk "$dir" 2>/dev/null | cut -f1
else
echo "0"
fi
}
# Exécution nettoyage entreprise
echo "🏢 Nettoyage Stockage Entreprise MacFleet"
echo "=========================================="
echo "Généré : $(date)"
echo "Appareil : $(hostname)"
total_freed=0
current_user=$(stat -f "%Su" /dev/console)
current_user_uid=$(id -u "$current_user")
for location_config in "${CLEANUP_LOCATIONS[@]}"; do
IFS=':' read -r location_pattern size_limit <<< "$location_config"
echo ""
echo "📁 Traitement : $location_pattern (>${size_limit}KB)"
# Expansion du motif pour répertoires utilisateur
for location in $location_pattern; do
if [[ -d "$location" ]]; then
echo " 🔍 Scan : $location"
# Obtenir taille avant
before_size=$(get_directory_size "$location")
# Trouver et supprimer gros fichiers
deleted_files=$(launchctl asuser $current_user_uid sudo -iu "$current_user" \
find "$location" -type f -size +${size_limit}k -print -delete 2>/dev/null | wc -l)
# Obtenir taille après
after_size=$(get_directory_size "$location")
freed=$((before_size - after_size))
total_freed=$((total_freed + freed))
if [[ $deleted_files -gt 0 ]]; then
echo " ✅ Supprimé : $deleted_files fichiers"
echo " 💾 Libéré : $(format_size $freed)"
else
echo " ℹ️ Aucun gros fichier trouvé"
fi
fi
done
done
echo ""
echo "=========================================="
echo "📊 Résumé :"
echo " Espace total libéré : $(format_size $total_freed)"
echo " Nettoyage terminé : $(date)"
if [[ $total_freed -gt 0 ]]; then
echo "✅ Nettoyage stockage réussi"
else
echo "ℹ️ Aucun nettoyage nécessaire - utilisation stockage optimale"
fi
Nettoyage Sécurisé avec Option Sauvegarde
Script avec sauvegarde optionnelle avant suppression :
#!/bin/bash
# Fonction pour sauvegarder gros fichiers avant suppression
backup_and_delete() {
local search_path="$1"
local size_limit="$2"
local backup_enabled="${3:-false}"
local current_user=$(stat -f "%Su" /dev/console)
local current_user_uid=$(id -u "$current_user")
local backup_dir="/tmp/macfleet_backup_$(date +%Y%m%d_%H%M%S)"
echo "🔄 Traitement : $search_path"
if [[ "$backup_enabled" == "true" ]]; then
echo "📦 Création répertoire sauvegarde : $backup_dir"
mkdir -p "$backup_dir"
# Trouver et sauvegarder gros fichiers
launchctl asuser $current_user_uid sudo -iu "$current_user" \
find "$search_path" -type f -size +${size_limit}k -exec cp {} "$backup_dir/" \;
echo "✅ Fichiers sauvegardés dans : $backup_dir"
fi
# Supprimer gros fichiers
local deleted_count=$(launchctl asuser $current_user_uid sudo -iu "$current_user" \
find "$search_path" -type f -size +${size_limit}k -print -delete | wc -l)
echo "🗑️ Supprimé $deleted_count gros fichiers"
if [[ "$backup_enabled" == "true" && $deleted_count -gt 0 ]]; then
echo "💡 Emplacement sauvegarde : $backup_dir"
echo "⏰ Sauvegarde sera auto-supprimée dans 7 jours"
# Programmer nettoyage sauvegarde (nécessite launchd ou cron)
echo "find '$backup_dir' -type f -mtime +7 -delete" > /tmp/cleanup_backup.sh
chmod +x /tmp/cleanup_backup.sh
fi
}
# Configuration
SEARCH_PATH="/Users/$(stat -f "%Su" /dev/console)/Downloads"
SIZE_LIMIT="100"
BACKUP_ENABLED="true"
# Exécuter nettoyage sécurisé
backup_and_delete "$SEARCH_PATH" "$SIZE_LIMIT" "$BACKUP_ENABLED"
Utilisation avec MacFleet
- Configurez le chemin de recherche et la limite de taille dans le script
- Choisissez entre mode test à sec et suppression réelle
- Considérez activer l'option sauvegarde pour sécurité
- Déployez via l'exécution de script distant MacFleet
- Surveillez les résultats et l'espace libéré dans l'historique des actions
Unités de Taille et Exemples
Unité | Description | Cas d'Usage Exemple |
---|---|---|
+50k | Fichiers plus grands que 50KB | Nettoyage petits documents |
+10M | Fichiers plus grands que 10MB | Nettoyage fichiers média |
+100M | Fichiers plus grands que 100MB | Nettoyage gros fichiers |
+1G | Fichiers plus grands que 1GB | Nettoyage archives |
Cibles de Nettoyage Communes
Répertoire | Limite Taille Typique | Objectif |
---|---|---|
Téléchargements | 50MB | Supprimer gros téléchargements |
Bureau | 100MB | Nettoyer fichiers bureau |
Documents | 200MB | Archiver anciens documents |
Dossiers temp | 10MB | Nettoyage système |
Considérations de Sécurité
⚠️ ATTENTION CRITIQUE : Les fichiers supprimés avec ces scripts sont définitivement supprimés et ne peuvent pas être récupérés de la Corbeille.
- Tester d'abord : Toujours exécuter en mode test à sec initialement
- Sauvegarder données importantes : Considérez l'option sauvegarde pour fichiers précieux
- Vérifier chemins : Vérifiez deux fois les répertoires de recherche avant exécution
- Contexte utilisateur : Les scripts s'exécutent dans le contexte utilisateur actuel pour sécurité
Dépannage
Permission refusée : Assurez-vous du bon contexte utilisateur avec launchctl asuser
Répertoire non trouvé : Vérifiez que les chemins de recherche existent avant exécution
Aucun fichier trouvé : Vérifiez les limites de taille et contenu des répertoires
Note : Validez toujours les scripts sur des systèmes de test avant déploiement en masse. La suppression permanente de fichiers nécessite une considération attentive et planification de sauvegarde.