как найти в Linux только папки размером более 100МБ или 1G - PullRequest
0 голосов
/ 11 сентября 2018

Я на самом деле пробовал несколько команд из нескольких блогов, но, похоже, это не работает должным образом.В приведенном ниже примере я упоминал, что нашел папки размером от 500 до 1000 МБ, но он также отображает папки меньшего размера.

https://www.unixtutorial.org/2014/07/how-to-find-directories-larger-than-1gb-in-linux/

global1:/u01/app/oowner/diag/rdbms> du -h --max-depth=1 /u01/app/oowner/diag/rdbms  | grep '[500-1000]M\>' | sort -r
975M    /u01/app/oowner/diag/rdbms/uscs01
7.5M    /u01/app/oowner/diag/rdbms/qscs8
615M    /u01/app/oowner/diag/rdbms/tscss11
45M     /u01/app/oowner/diag/rdbms/cst01c1
41M     /u01/app/oowner/diag/rdbms/cst01
3.1M    /u01/app/oowner/diag/rdbms/tscss12

Буду очень признателен за помощь в этомкоманды.

Спасибо, Мухаммеддба.

1 Ответ

0 голосов
/ 11 сентября 2018

grep не работает таким образом.Используются диапазоны символов, а не диапазоны номеров.

Например, [a-c] соответствует a или b или c.Когда не используется -, совпадает любой из символов [abc] также соответствует a или b или c.

Для этого [0-1] соответствует 0 или 1.

А [500-1000] соответствует 5 или 0 или 0 или 1 или 0 или 0 или 0.Это то же самое, что и [015]

Наконец, в любом месте искомых строк найдено совпадение, поэтому, например, [015]M также соответствует строке с 7777775M.

Решение для совпадения500 - 999 будет:

^[5-9]\?[0-9]\?[0-9](\.[0-9]*)\?M

Чтобы соответствовать 500 - 1000, будет немного сложнее:

^\([5-9]\|10\)\?[0-9]\?[0-9](\.[0-9]*)\?M


Я предлагаю не использовать регулярные выражения для разбора диапазона чисел.

Вы можете использовать awk или даже цикл оболочки, если вы хотите продолжать использовать некоторый grep.awk намного быстрее, цикл оболочки будет выглядеть примерно так:

du -h --max-depth=1 /u01/app/oowner/diag/rdbms | grep '^[0-9\.]*M' | while read -r line; do
    num=$(echo "$line" | grep -o '^[0-9]*')
    if test "$num" -ge 500; then
        echo "$line"
    fi
done | sort -rh

awk упоминается в комментарии @ PackardCPW к вопросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...