Je suis conditionné à la ll
commande qui est aliasée vers ls -alF
. Il manque juste un nombre de fichiers et une taille de fichiers en bas. J'ai joué avec du
et tree
mais je n'ai pas pu obtenir les totaux dont j'avais besoin. Alors j'ai créé lll
de faire ça pour moi.
Dans votre ~/.bashrc
placez ce qui suit:
lll () { ls -alF "$@" arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}')) printf " \33[1;31m ${arr[0]}\33[m line(s). " printf "Total size: \33[1;31m ${arr[1]}\33[m\n"# printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"}
Enregistrez le fichier et la ressource en utilisant . ~/.bashrc
(ou vous pouvez redémarrer votre terminal).
Sortie d'échantillon
La bonne chose à propos de ll
la sortie est ses couleurs. Ceci est maintenu avec lll
mais perdu lors de l'utilisation find
ou du
:
TL; DR
Une fonction bonus que vous pouvez ajouter à ~/.bashrc
est appelé BytesToHuman()
. Cela fait ce à quoi la plupart des utilisateurs de console s'attendraient en convertissant de grands nombres en MiB, GiB, etc:
function BytesToHuman() { # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254 read StdIn b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB) while ((b > 1024)); do d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))" b=$((b / 1024)) let s++ done echo "$b$d ${S[$s]}"} # BytesToHuman ()
Retournez ensuite le commentaire entre deux lignes lll ()
fonction pour ressembler à ceci:
# printf "Total size: \33[1;31m ${arr[1]}\33[m\n" printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
Maintenant, votre sortie ressemble à ceci:
Comme toujours, n'oubliez pas de vous réapprovisionner avec . ~/.bashrc
chaque fois que vous apportez des modifications. (Ou redémarrer le terminal bien sûr)
PS-Deux semaines d'auto-quarantaine m'ont finalement donné le temps de travailler sur cet objectif vieux de cinq ans.