I am trying to print the name of directories whose free space is greater than zero.
#Listed all the directory and their consumed space.
du -sm storage*
365 storage1
670 storage2
1426 storage3
I have threshold value of 1000M , so I am trying to print free space in these directories relative to threshold value provided.
du -sm storage* | awk -v threshold="1000" '$1>0{print $1=threshold-$1,$2}'
635 storage1
330 storage2
-426 storage3
So , I want to print those directories whose free size is positive integer. Something like :
635 storage1
330 storage2
Any correction ?
You can write it like this,
awk -v threshold="1000" '{$1=threshold-$1} $1 > 0'
Example
awk -v threshold="1000" '{$1=threshold-$1} $1 > 0' input
635 storage1
330 storage2
What it does?
$1=threshold-$1
Sets the first column relative to the threshold.
$1 > 0
Checks if the derived first column is greater than zero. If this expression evaluates true, it prints the entire input line.
I think this got overly complicated. If you just want to check that the size is positive and lower than a given threshold, say so:
awk -v threshold=1000 '0 < $1 && $1 < threshold'
$ cat file
635 storage1
330 storage2
-426 storage3
$ awk -v thr=1000 '0 < $1 && $1 < thr' file
635 storage1
330 storage2
Just check $1 > 0
in awk
du -sm storage*|awk '{if ( $1 > 0 ) print }'
or
du -sm storage*|awk '$1>0'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.