15

My "df -h" command on my Linux box has some devices with longer names and so the "df -h" output has line breaks (or tabs??) in it, which makes it difficult to parse the output in a script.

Does anyone know how I can suppress the linebreaks so that the latter of the following outputs is what I get:

[root@me ~]# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      3.9G  404M  3.3G  11% /
/dev/mapper/VolGroup00-LogVol05
                      3.9G  442M  3.3G  12% /home
/dev/mapper/VolGroup00-LogVol04
                      3.9G  261M  3.5G   7% /var
/dev/mapper/VolGroup00-LogVol03
                      3.9G  137M  3.6G   4% /tmp
/dev/mapper/VolGroup00-LogVol02
                      7.8G  3.6G  3.8G  49% /usr

And the desired format is:

[root@me ~]# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   3.9G  404M  3.3G  11% /
/dev/mapper/VolGroup00-LogVol05   3.9G  442M  3.3G  12% /home
/dev/mapper/VolGroup00-LogVol04   3.9G  261M  3.5G   7% /var
/dev/mapper/VolGroup00-LogVol03   3.9G  137M  3.6G   4% /tmp
/dev/mapper/VolGroup00-LogVol02   7.8G  3.6G  3.8G  49% /usr
user606723
  • 1,802
djangofan
  • 3,884
  • 1
    I can't test this because my drive paths aren't huge like yours. Try df -Pkh – user606723 Aug 03 '11 at 19:48
  • 1
    @user606723: why do not put it in an answer? – enzotib Aug 03 '11 at 19:51
  • I did just now. =p. I didn't put it in an answer at first because it was a blatant guess from looking at the man file for two seconds. – user606723 Aug 03 '11 at 19:53
  • 1
    The use of -h and -k together is pointless as they contradict each other and the last one given "wins" (i.e. df -hk gives 1024 blocks output while df -kh gives human readable output). – PerlDuck Nov 27 '18 at 14:13

2 Answers2

18

Try: df -Pkh

The P stands for "portable", and will force it to follow POSIX standard output.
I have a hunch will fix any clever formatting that df tries to do.

In the future when you try to solve problems like these, try man df and see if you can find anything that looks like it might work... cause thats what I did =)

user606723
  • 1,802
2
 df -Ph | awk '{printf "%-35s%-10s%-10s%-10s%-5s%s\n",$1,$2,$3,$4,$5,$6}'
muru
  • 207,970