NBash
55 строк · 1.3 Кб
1#!/bin/bash
2
3prettybc="./L14-prettybc"4
5# Функция преобразования размеров файлов
6
7readablesize()8{
9if [ $1 -ge 1048576 ] ; then10echo "$($prettybc -p 2 $1 / 1048576)Gb"11elif [ $1 -ge 1024 ] ; then12echo "$($prettybc -p 2 $1 / 1024)Mb"13else14echo "${1}Kb"15fi16}
17
18# Основной сценарий
19
20if [ $# -gt 1 ] ; then21echo "Использование: $0 [dirname]" >&222exit 123elif [ $# -eq 1 ] ; then24# Альтерантивный короткий вариант от @balaamster25# { [ -d "$1" ] && cd $1; } || \26# echo "Ошибка: Заданный каталог не сущестует" >&2; exit 127cd "$@" 2> /dev/null28if [ $? -ne 0 ] ; then29echo "Ошибка: Заданный каталог не сущестует" >&230exit 131fi32fi
33
34for file in *35do
36if [ -d "$file" ] ; then37size=$(ls "$file" | wc -l | sed 's/[^[:digit:]]//g')38if [ $size -eq 1 ] ; then39echo "$file ($size файл)|"40elif [ $size -gt 1 ] && [ $size -lt 5 ] ; then41echo "$file ($size файла)|"42else43echo "$file ($size файлов)|"44fi45else46size="$(ls -sk "$file" | awk '{print $1}')"47echo "$file ($(readablesize $size))|"48fi49done | \50sed 's/ /^^^^^/g' | \51xargs -n 2 | \52sed 's/\^\^\^\^\^/ /g' | \53awk -F\| '{ printf "%-39s %-39s\n", $1, $2 }'54
55exit 056
57
58