How to view file size/details from ls command in unix?  

Wednesday, July 8, 2009

I always find it difficult to digest the filesize from the ls -al command. For instance, after ls -al, the output give me filesize in bytes.

Gosh, then I have to start calculating it by taking last 4 digits, slowly count upwards like 1K, 10K, 100K, 1MB, 10MB, 100MB and so on so forth.

For instance:

this output:
-rw-r--r-- 1 walrus dba 137207094 Jul 8 23:12 config.2008032519.s

137207094 is how much?

going with my method of counting upwards, it gives me 137MB roughly.

Is it correct? WRONG. Hell wrong

The above is bits only. Bear in mind, 1 KB = 1024 bits, 1 MB = 1024 KB and so on so forth

[ Source ]
1 bit = a 1 or 0 (b)
4 bits = 1 nybble (?)
8 bits = 1 byte (B)
1024 bytes = 1 Kilobyte (KB)
1024 Kilobytes = 1 Megabyte (MB)
1024 Megabytes = 1 Gigabyte (GB)
1024 Gigabytes = 1 Terabyte (TB)

The correct calculation is 137207094 / 1024 (bits) / 1024 (KB) = 130.8 MB

Starting in Solaris 10, we have a new option in ls command.

: /u01/apps/WatchMark/FlexPM/classic/vendor/Lucent/ECP/ftpIN/in>uname -a
SunOS lxserver 5.10 Generic_118833-36 sun4u sparc SUNW,Sun-Fire-V445

ANCIENT WAY:
ls -al
total 270388
drwxr-xr-x 2 walrus dba 1024 Jul 8 23:14 .
drwxr-xr-x 11 walrus dba 512 Jun 17 01:49 ..
-rw-r--r-- 1 walrus dba 137207094 Jul 8 23:12 config.2008032519.s
-rw-r--r-- 1 walrus dba 451989 Jul 8 23:12 config.2008032519.split0.bz

cons: hard to read filesize and output distorted

NEW WAY:
ls -alh
total 269060
drwxr-xr-x 2 flexpm dba 1.0K Jul 8 23:12 .
drwxr-xr-x 11 flexpm dba 512 Jun 17 01:49 ..
-rw-r--r-- 1 flexpm dba 131M Jul 8 23:12 config.2008032519.s
-rw-r--r-- 1 flexpm dba 441K Jul 8 23:12 config.2008032519.split0.sm.gz

pros:
- more readable format in terms of file size
- contents are properly aligned.

cons:
- need to type extra 'h' at the end of ls command

AddThis Social Bookmark Button
Email this post


How to use regular expression (regex) in grep or vi?  

How to use regular expression (regex) in grep or vi?

If you need to search for a pattern of "string" or "character" in a file / many files, you will need to use regular expression (regex) either in vi editor or in grep command. But how? See below:

using vi:
- press '/' for searching
- for instance, i wanted to search for CL000, CL001, CL002, ie: the pattern is CLXXX follow by digit.
- syntax:
/^CL[0-9]*

^ - start of pattern
* - zero or more digit

using unix grep command:
- grep CL[0-9]

AddThis Social Bookmark Button
Email this post


Design by Amanda @ Blogger Buster