Get free disk space with df to just display free space in kb?

后端 未结 4 1123
谎友^
谎友^ 2020-12-13 13:35

I\'m trying to output the amount of free disk space on the filesystem /example.

If I run the command df -k /example I can get good informat

4条回答
  •  北海茫月
    2020-12-13 14:25

    To get the output of df to display the data in kb you just need to use the -k flag:

    df -k
    

    Also, if you specify a filesystem to df, you will get the values for that specific, instead of all of them:

    df -k /example
    

    Regarding the body of your question: you want to extract the amount of free disk space on a given filesystem. This will require some processing.

    Given a normal df -k output:

    $ df -k /tmp
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda1        7223800 4270396   2586456  63% /
    

    You can get the Available (4th column) for example with awk or cut (previously piping to tr to squeeze-repeats (-s) for spaces):

    $ df -k /tmp | tail -1 | awk '{print $4}'
    2586456
    $ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
    2586456
    

    As always, if you want to store the result in a variable, use the var=$(command) syntax like this:

    $ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
    $ echo "$myUsed"
    2586456
    

    Also, from the comment by Tim Bunce you can handle long filesystem names using --direct to get a - instead, so that it does not print a line that breaks the engine:

    $ df -k --direct /tmp
    Filesystem     1K-blocks    Used Available Use% Mounted on
    -                7223800 4270396   2586456  63% /
    

提交回复
热议问题