How to find the size of a file and assign it to a variable in UNIX

前端 未结 4 621
借酒劲吻你
借酒劲吻你 2021-01-23 09:36

I am writing a UNIX script that reads the size of a text file and if the file is of some size it should print the text file. If it is not an else loop executes and the process c

相关标签:
4条回答
  • 2021-01-23 09:52

    I wouldn't recomment stat which is not portable not being specified by POSIX.

    Here is a safer way to get the file size in a variable.

    size=$(ls -dnL -- "${filepath}/{filename}.lst" | awk '{print $5;exit}')
    
    0 讨论(0)
  • 2021-01-23 10:15

    You can use the stat command which eliminates the need to use awk.

    For example in in linux with bash where myfile is your file path:

    sz=$(stat -c '%s' myfile)
    if [ $sz -eq 100 ]; then
        echo "myfile is 100 bytes"
    fi
    

    Take note of the equality command -eq that's the arithmetic binary operator in bash.

    Alternatively you can use a variable for the file path:

    f=my/file/path
    sz=$(stat -c '%s' $f)
    if [ $sz -eq 100 ]; then
        echo "$f is 100 bytes"
    fi
    
    0 讨论(0)
  • 2021-01-23 10:17

    Simply put it as-

    var=$(ls -l ${filepath}/{filename}.lst | awk '{print $5}')
    
    0 讨论(0)
  • 2021-01-23 10:19

    Assign your file size in a variable and then check equality with -eq

    size=`ls -l ${filepath}/{filename}.lst| awk '{print $5}'`
    if [ $size  -eq 461 ]
    then
       echo "MATCHED"
    else
      echo "NOT MATCHED"
    fi
    
    0 讨论(0)
提交回复
热议问题