Объединить объем тома более 85%

Я хочу, чтобы на выходе ниже хватало все имена томов, размер которых превышал 85%. Я знаю, что в этом нет ни одного примера, но давайте притвориться, что есть. :)

Filesystem               total       used      avail capacity  Mounted on
/vol/mc3240a/            190GB       18GB      171GB      10%  /vol/mc3240a/
/vol/mc3240a/.snapshot       10GB      355MB     9884MB       3%  /vol/mc3240a/.snapshot
/vol/mc3240b_root_backup/      210GB     9019MB      201GB       4%  /vol/mc3240b_root_backup/
/vol/mc3240b_root_backup/.snapshot        0MB     1691MB        0MB     ---%  /vol/mc3240b_root_backup/.snapshot
1
задан 18 February 2014 в 18:36

3 ответа

Попробуйте это (поместите его в скрипт, сделайте его исполняемым):

#!/bin/bash

DF_BIN='/bin/df'

DF_OUT=`${DF_BIN}`

tring='first line
second line
third line'

oldIFS="$IFS"   # store old IFS value
IFS='
'
IFS=${IFS:0:1} # tab formatting
lines=( $DF_OUT )

IFS=', '

COUNTER=0
for line in "${lines[@]}"
    do
        if [  $COUNTER -gt 0 ]; then    # strip first line
            fields=( $line )
            if [[ ${fields[4]} =~ (8[5-9]|[9][0-9]|100)%$ ]]; then
                echo "==> $line"
            fi
        fi
        let COUNTER=COUNTER+1 
done

IFS="$oldIFS"

exit 0

Не так коротка, как ответы выше, но он ловит 85% до 100% в правой строке ... [ ! d1]

или: SHORT one-line:

df -hx tmpfs -x devtmpfs | egrep '(8[5-9]|9[0-9]|100)%'

(отредактированная версия Wilfs), как и решение другого, но используя egrep с альтернативами)

2
ответ дан 24 May 2018 в 11:39
  • 1
    Черт - я думал, что смогу сделать это как один лайнер ... Блестящий +1. – Wilf 18 February 2014 в 19:12
  • 2
    Мне нравится один лайнер, но я ожидаю, что вам нужно вырезать вывод, чтобы показывать только устройство;) – Rinzwind 18 February 2014 в 19:16
  • 3
    Как насчет df -hx tmpfs -x devtmpfs | egrep '(8[5-9]|9[0-9]|100)%' | cut -f 1 -d " " | sed -e 's/\/vol\///g'? – Wilf 18 February 2014 в 19:26

Как и другие, но в скрипте, чтобы убедиться, что все это схвачено:

#!/bin/bash
#For 85% to 89%, and 95& to 99%
df -hx tmpfs -x devtmpfs | egrep '[8-9][5-9]%'
#To find if anything is 90%-94%
df -hx tmpfs -x devtmpfs | egrep '9[0-4]%'
#To find if anything is 100%
df -hx tmpfs -x devtmpfs | egrep '100%'

Отфильтрован вход для образца (tmpfs и т. д.):

wilf@comp:~$ df -hx tmpfs -x devtmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        96G   21G   71G  23% /
/dev/sda3        58G   43G   12G  79% /home
/dev/sda5       357G  335G  4.2G  99% /run/media/wilf/Storage
/dev/sda6        27G   19G  6.8G  74% /run/media/wilf/433b971a
[d2 ] Пример вывода - с именем диска с другим материалом, поскольку я не отфильтровал это:

wilf@comp:~$ ./testScript
/dev/sda5       357G  335G  4.2G  99% /run/media/wilf/Storage

Основанный на @wolfgang, он должен распечатать только имя диска без /vol:

df -hx tmpfs -x devtmpfs | egrep '(8[5-9]|9[0-9]|100)%' | cut -f 1 -d " " | sed -e 's/\/vol\///g'
2
ответ дан 24 May 2018 в 11:39
  • 1
    yep, простейший (и я думаю, лучше всего) ваш @Wilf - просто используйте альтернативный выбор, и все сделано! – Wolfgang 18 February 2014 в 19:15
  • 2
    @WolfgangVogl - ваш однострочный луч лучше: D – Wilf 18 February 2014 в 19:15
  • 3
    @wilf, в конце концов, все мы оказываемся в одной строке. Теперь что: D: D – Rinzwind 18 February 2014 в 19:19
  • 4
    @Rinzwind - Dunno :) – Wilf 18 February 2014 в 19:20
  • 5
    @wilf вы забываете сократить результат.OP хочет только устройство;) – Rinzwind 18 February 2014 в 19:20

Предположим, что вы используете команду say xyz, чтобы получить этот вывод, тогда

xyz | grep "[8-9][5-9]%"

должен дать вам правильный вывод

1
ответ дан 24 May 2018 в 11:39
  • 1
    Чтобы уточнить, я хочу захватить имя, mc3240a, а не всю строку – Jocke 18 February 2014 в 18:51
  • 2
    Думаю, это будет немного сложно. – Null pointer 18 February 2014 в 18:54
  • 3
    Возможно, я ошибаюсь, но не будут ли эти цифры не отображаться как 92%, так как второе число ниже 5? То же самое для @Rinzwind – Wilf 18 February 2014 в 18:59
  • 4
    думаю, у нас есть достаточно правильных ответов - но этот дает не от 90 до 94 и 100, как вы уже сказали Уилфу ... – Wolfgang 18 February 2014 в 19:29

Другие вопросы по тегам:

Похожие вопросы: