Записи с Меткой ‘ bash

Чистка мусора linux

du -sm /* | sort -nr
du -sm /var | sort -nr

Для вывода отсортированного списка файлов размером больше 500Мб, находящихся
в дереве файловой системы начиная с текущей директории можно использовать команду:

find . -type f -size +500M -exec ls -l {} \; | sort -k5 -n -r| less

Для вывода отсортированного по размеру списка директорий можно использовать команду:

find . -type d -maxdepth 1 -exec du -s {} \;|sort -k1 -r -n| less

Для выявления конечной директории с большими файлами можно снять ограничение на
рекурсивную проверку:

find . -type d -exec du -s {} \;| sort -k1 -r -n| less

Найти все avi, mpg, wmv файлы можно так:

find . \( -iname «*.avi» -o -iname «*.mpg» -o -iname «*.wmv» \) -type f -exec ls -l {} \;| less

PS. Вместо ls можно было использовать встроенные опции -ls или -printf «%s %P\n»,
но %P не всегда легко вспомнить, а вывод -ls не совсем привычен.

Найти 10 самых больших фалов, начиная с ‘/’ (корня)
$ find / -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk ‘{printf «%10d MB\t%s\n»,($7/1024)/1024,$NF}’

Найти 10 самых больших фалов, начиная с ‘/home’
$ find /home -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk ‘{printf «%10d MB\t%s\n»,($7/1024)/1024,$NF}’

самые большие директории:
du -kx | egrep -v «\./.+/» | sort -n

Спасибы.

http://www.shellhacks.com/ru/Poisk-Bolshih-Faylov-v-Linux

Bash проверки существования файла, директории, пользователя

Проверка существования файла:
if ! [ -f /path/to/file ]; then
echo 'No file'
fi

Проверка существования директории:
if ! [ -d /path/directory/ ]; then
echo 'No directory'
fi

Проверка существования пользователя:
grep "username:" /etc/passwd >/dev/null
if [ $? -ne 0 ]; then
echo 'No username found'
fi

сравнение целых чисел

-eq
равно

if [ "$a" -eq "$b" ]

-ne
не равноif [ "$a" -ne "$b" ]

-gt
большеif [ "$a" -gt "$b" ]

-ge
больше или равноif [ "$a" -ge "$b" ]

-lt
меньшеif [ "$a" -lt "$b" ]

-le
меньше или равноif [ "$a" -le "$b" ]

<
меньше (внутри двойных круглых скобок )(("$a" < "$b"))

<=
меньше или равно (внутри двойных круглых скобок)(("$a" <= "$b"))

>
больше (внутри двойных круглых скобок)(("$a" > "$b"))

>=
больше или равно (внутри двойных круглых скобок)(("$a" >= "$b"))

сравнение строк

=
равно

if [ "$a" = "$b" ]

==
равноif [ "$a" == "$b" ]

Синоним оператора =.

[[ $a == z* ]]    # истина, если $a начинается с символа "z" (сравнение по шаблону)
[[ $a == "z*" ]]  # истина, если $a равна z*

[ $a == z* ]      # имеют место подстановка имен файлов и разбиение на слова
[ "$a" == "z*" ]  # истина, если $a равна z*

# Спасибо S.C.
!=
не равноif [ "$a" != "$b" ]

Этот оператор используется при поиске по шаблону внутри [[ … ]].

<
меньше, в смысле величины ASCII-кодовif [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

Обратите внимание! Символ «<» необходимо экранировать внутри [ ].

>
больше, в смысле величины ASCII-кодовif [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

Обратите внимание! Символ «>» необходимо экранировать внутри [ ].

См. Пример 25-6 относительно применения этого оператора сравнения.

-z
строка «пустая», т.е. имеет нулевую длину
-n
строка не «пустая».