Dernière activité 1 month ago

Révision 1c9e9ce6ecb77f9ec3fa53890559ef20b36152d1

taille-dir.sh Brut
1#!/bin/bash
2
3# ===== Couleurs =====
4C_RESET="\e[0m"
5C_DIR="\e[34m" # Dossiers
6C_FILE="\e[32m" # Fichiers
7C_ARCH="\e[35m" # Archives
8C_SCRIPT="\e[33m" # Scripts .sh .py .pl
9C_IMG="\e[36m" # Images
10C_VIDEO="\e[31m" # Vidéos
11C_AUDIO="\e[95m" # Musique
12C_HEAD="\e[96m" # En-têtes
13C_SIZE="\e[90m" # Gris fade pour la taille
14
15
16directory="${1:-.}"
17display_dir=$(realpath "$directory")
18
19# ===== Vérifications =====
20if [ ! -d "$directory" ]; then
21 echo -e "\e[31m❌ Erreur : dossier introuvable : $directory${C_RESET}"
22 exit 1
23fi
24
25echo -e "${C_HEAD}📁${C_RESET} Listing du dossier :${C_HEAD} $display_dir${C_RESET}"
26echo -e "${C_FILE}📦${C_RESET} Taille totale :${C_FILE} $(du -sh "$directory" | awk '{print $1}')${C_RESET}"
27echo
28
29# ===== En-têtes (sans LINKS) =====
30printf "%-6s %-11s %-12s %-12s %-8s %-17s %s\n" \
31"TYPE" "PERMISSIONS" "OWNER" "GROUP" "SIZE" "DATE" "NAME"
32
33# ===== Fonction type et couleur =====
34get_type_color() {
35 local f="$1"
36
37 if [ -d "$f" ]; then echo "📁 ${C_DIR}"
38 elif [[ "$f" =~ \.(zip|tar|gz|bz2|xz|rar|7z)$ ]]; then echo "📚 ${C_ARCH}"
39 elif [[ "$f" =~ \.(sh|py|pl|rb)$ ]]; then echo "🔧 ${C_SCRIPT}"
40 elif [[ "$f" =~ \.(jpg|jpeg|png|gif|webp)$ ]]; then echo "🖼️ ${C_IMG}"
41 elif [[ "$f" =~ \.(mp4|avi|mkv|mov)$ ]]; then echo "🎞️ ${C_VIDEO}"
42 elif [[ "$f" =~ \.(mp3|wav|ogg|flac)$ ]]; then echo "🎵 ${C_AUDIO}"
43 else echo "📄 ${C_FILE}"
44 fi
45}
46
47# ===== Listing =====
48ls -A "$directory" | while read entry; do
49 path="$directory/$entry"
50
51 type_color=$(get_type_color "$entry")
52 emoji=$(echo "$type_color" | awk '{print $1}')
53 color=$(echo "$type_color" | awk '{print $2}')
54
55 perms=$(stat -c "%A" "$path")
56 owner=$(stat -c "%U" "$path")
57 group=$(stat -c "%G" "$path")
58 size_raw=$(du -sh "$path" 2>/dev/null | awk '{print $1}')
59 date=$(stat -c "%y" "$path" | cut -d':' -f1,2) # Retire les secondes (HH:MM)
60
61 printf "%b%-6s%b %-11s %-12s %-12s %b%-8s%b %-17s %b%s%b\n" \
62 "$color" "$emoji" "$C_RESET" \
63 "$perms" "$owner" "$group" \
64 "$C_SIZE" "$size_raw" "$C_RESET" \
65 "$date" \
66 "$color" "$entry" "$C_RESET"
67
68done
69
70echo
71exit 0
72