un du un peu interactif grâce à fzy - retour accueil
git clone git://bebou.netlib.re/fdu
Log | Files | Refs | README |
fdu.sh (1527B)
1 #! /bin/sh 2 3 VERSION="0.2" 4 5 help() <<\% cat 6 Un du un peu interactif pour un semblant de qdirstat (ou ncdu etc) 7 8 Usage : fdu [-hv] [-c commande] [chemin] 9 10 Le chemin par défaut est le repertoire courant 11 12 Naviguez dans la liste avec les flèches 13 Sélectionnez un élément avec la touche entrée 14 Si un dossier est sélectionné fdu analysera le contenu du dossier 15 Si un fichier est sélectionné il terminera (pour le moment) 16 17 Exemples : 18 19 $ fdu 20 21 analyser le dossier courant 22 23 $ fdu ~ 24 25 analyser votre home 26 % 27 28 tmpd=$(mktemp -d) 29 trap "rm -rf $tmpd;exit 0" INT QUIT EXIT 30 31 echo "a" | fzy -m -e "a" 2>&1 | grep "invalid option -- 'm'" \ 32 && multi="no" \ 33 || multi="yes" 34 echo "$multi" 35 36 while getopts "hvc:" opt; do 37 case $opt in 38 ( c ) [ ! -z $OPTARG ] && eval "$opt='$OPTARG'" ;; 39 ( v ) printf "%s\n" "$VERSION"; exit ;; 40 ( h ) help; exit ;; 41 esac 42 done 43 shift $((OPTIND - 1)) 44 45 cur=$(cd "${1:-.}" && pwd) 46 while [ "$cur" != "quit" ];do 47 tmpf=$(printf "%s" "$cur" | tr '/' '-') 48 49 if [ -f "$tmpd/$tmpf" ]; then 50 list=$(cat "$tmpd/$tmpf") 51 else 52 list=$(du -a -d 1 -h "$cur" | sort -hr | sed -E "s,.* $cur$,,") 53 printf "%s" "$list" > $tmpd/$tmpf 54 fi 55 56 [ "$multi" = "yes" ] \ 57 && cur=$(printf "quit\nprev %s\n%s" "${cur%/*}" "$list" | fzy -m -l 20 | cut -f2) \ 58 || cur=$(printf "quit\nprev %s\n%s" "${cur%/*}" "$list" | fzy -l 20 | cut -f2) 59 60 61 if [ -f "$cur" ];then 62 cmd=$(eval "echo $cur | xargs echo $cmd") 63 read -p "Execute \"$cmd\" ? (y/N) " a 64 [ "$a" = "y" ] && eval "$cmd" 65 cur=${cur%/*} 66 fi 67 done