![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| need help in sort | ali560045 | Shell Programming and Scripting | 2 | 12-04-2007 04:38 AM |
| sort | prasathlogu | UNIX for Dummies Questions & Answers | 1 | 10-08-2007 03:56 AM |
| sort help | unics | Shell Programming and Scripting | 14 | 04-30-2007 04:28 AM |
| How do i sort? | abhijeetkul | Shell Programming and Scripting | 1 | 12-22-2005 12:49 AM |
| 2nd sort key | whatisthis | UNIX for Dummies Questions & Answers | 1 | 10-20-2004 07:46 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
du -h | sort ?
Hi all,
I want to sort a directory by file size, du -k |sort -nr is fine, but the output number is NOT friendly. So how to sort more friendly with du -h ? |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
The problem with -h is that you end up with things like K, M and G for kB, MB, or GB (I think, I have no access to Linux right now to actually verify this). So you are better off using -k if you want to sort it.
|
|
#3
|
|||
|
|||
|
I have an approach
du -k |sort -nr > sort_file.txt. The output file will be like this: 3783749 . 5294 ./dir3 4790 ./dir3/dir5/dir1 3088 ./dir8 ... can you help me on how to convert the number from sort_file.txt to MB, GB format, like this: 3.6 GB . 5.2 MB ./dir3 4.7 MB ./dir3/dir5/dir1 3 MB ./dir8 ... Thanks |
|
#4
|
||||
|
||||
|
You can use awk to format the size field :
Code:
du -k | sort -nr | awk '
BEGIN {
split("KB,MB,GB,TB", Units, ",");
}
{
u = 1;
while ($1 >= 1024) {
$1 = $1 / 1024;
u += 1
}
$1 = sprintf("%.1f %s", $1, Units[u]);
print $0;
}
' > sort_file.txt
Jean-Pierre |
|
#5
|
|||
|
|||
|
Thank Jean-Pierre,
your script with awk works, but the calculation is not correct. My actual data like this: 126M /openoffice/bin 31M /openoffice/old_versions but it report: 0.1 MB /openoffice/bin 0.0 MB /openoffice/old_versions Could you please correct it! Thank so much! |
|
#6
|
||||
|
||||
|
The awk script formats the result of the du -k command not du -h.
Jean-Pierre. |
|
#7
|
|||
|
|||
|
Oh, yes.
It's perfect! Jean |
|||
| Google The UNIX and Linux Forums |