1

The output of du -sh folder is some dimension and folder; how can I use grep -o '*G' and similar to just get the dimension, namely get rid of folder name?

3
  • 1
    Let's split those two separate questions into two separate Questions
    – Jeff Schaller
    Commented Mar 5, 2018 at 14:55
  • 1
    If your goal is to sum up the disk usage then you probably don't want to pass -h (human-readable) to du: you want the sizes to be listed in bytes for everything, to make it easier to combine the values. Commented Mar 5, 2018 at 19:20
  • @DanielPryden "you want the sizes to be listed in bytes" or -k or -m.
    – RonJohn
    Commented Mar 5, 2018 at 19:21

2 Answers 2

7

I can offer a simple cut solution :

du -sh . | cut -f1

The standard delimiter in cut is tab, so no need for any additional options. Simply print field 1.

From your comment, it seems you are concerned with resources/speed so to quote Gilles from another answer:

"Generally speaking, the more specialized a tool is, the faster it is. So in most cases, you can expect cut and grep to be faster than sed, and sed to be faster than awk."

Quoted from here

The ouput of time for both commands shows:

time du -sh /folder | awk '{print $1}'
60K

real    0m0.005s
user    0m0.002s
sys     0m0.004s

time du -sh /folder | cut -f1
60k

real    0m0.003s
user    0m0.000s
sys     0m0.004s

I believe you would need to repeat that multiple times, and take the average to make it a fair test, but either way, not much in it. Technically cut should be "faster".

1
  • +1 for recommending an oft-overlooked, and quite useful, command.
    – RonJohn
    Commented Mar 5, 2018 at 19:19
3

You could use awk to only print the first column:

du -sh folder | awk '{print $1}'

For the file, also using awk:

awk '!($3="")' file
5
  • Thanks. Compared to grep, is it more resource draining? I plan to put this inside a script that is run every second to read my Dropbox folder size.
    – jj_p
    Commented Mar 5, 2018 at 15:00
  • 1
    If you can find a way to do it with grep try to use time to compare the performance of both.
    – jesse_b
    Commented Mar 5, 2018 at 15:01
  • 2
    @jj_p If you are running this on a dropbox folder every second, the "resource drain" is not going to be in the milliseconds differences in runtime between grep or awk or cut, it's going to be in running du on a remote filesystem. that'd be like worrying about a single drop of rain when your entire town is flooded.
    – cas
    Commented Mar 6, 2018 at 3:04
  • @cas well I'm running on local folder..
    – jj_p
    Commented Mar 6, 2018 at 3:22
  • @jj_p even with a local folder, the disk I/O is going to consume far more resources than the negligible differences in CPU usage between the commands. Network I/O for dropbox or any other remote fs just makes it worse.
    – cas
    Commented Mar 6, 2018 at 3:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .