Проверка файла на пустоту в bash

Discussion in 'Linux, Freebsd, *nix' started by tester_new, 5 Apr 2012.

  1. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    Необходимо проверить существует файл или нет.. и если да то что он не пустой.. Проверяю на существование вот так, но вот найти как проверить пустой файл или нет я не смог...

    HTML:
    f [ -e "./test_file" ]; then
        echo "OK"
    fi
    
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Code:
    stat путь к файлу | grep -o 'Size:\s[0-9]*' | awk '{print $2}'
    но это мой кривой вариант, по идее можно вывести только размер есть флаг %s у stat но хз как с ним совладать, и можно по идее только грепом вывести тоесть стат + греп без авк.
    Зы эта команда проверит размер файла.
     
    #2 mironich, 5 Apr 2012
    Last edited: 5 Apr 2012
  3. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    stat -c%s filename

    Еще можно du -b filename
     
    1 person likes this.
  4. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    man test
     
    1 person likes this.
  5. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    всем спасибо)
    как с результата работы этой команды оставить только цифры... вообщем вырезать все до первого проблела(может есть команда которая не выводит в конце имя файла)
    wc -l myFile
     
  6. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Code:
     wc -l myFile | grep -o '[0-9]*'
    или
    Code:
    wc -l  | awk '{print $1}'