#!/bin/bash
# Skrypt formatdir wyświetlający zawartość katalogu w przyjaznej i czytelnej formie.
# Sprawdź, czy w katalogach zmiennej PATH znajduje się skrypt scriptbc (skrypt nr 9),
# ponieważ jest on w tym skrypcie wywoływany kilkakrotnie.

# Funkcja wyświetlająca wielkości plików w Kb, Mb lub Gb w bardziej czytelnej formie.
readablesize()
{

  if [ $1 -ge 1048576 ] ; then
    echo "$(scriptbc -p 2 $1 / 1048576)Gb"
  elif [ $1 -ge 1024 ] ; then
    echo  "$(scriptbc -p 2 $1 / 1024)Mb"
  else 
    echo "${1}Kb"
  fi
}

#################
## Główna część kodu

if [ $# -gt 1 ] ; then
  echo "Użycie: $0 [dirname]" >&2; exit 1
elif [ $# -eq 1 ] ; then   # Jeżeli został podany inny katalog niż bieżący
  cd "$@"                  # wtedy przechodzimy do wskazanego katalogu.
  if [ $? -ne 0 ] ; then   # Jeżeli katalog nie istnieje, skrypt kończy działanie.
    exit 1
  fi
fi

for file in *
do 
  if [ -d "$file" ] ; then
    size=$(ls "$file" | wc -l | sed 's/[^[:digit:]]//g')
    echo "$file (liczba elementów: $size)|"
  else
    size="$(ls -sk "$file" | awk '{print $1}')"
    echo "$file ($(readablesize $size))|"
  fi
done | \
  sed 's/ /^^^/g'  | \
  xargs -n 2     | \
  sed 's/\^\^\^/ /g' | \
  awk -F\| '{ printf "%-39s %-39s\n", $1, $2 }'

exit 0
