Tag Archives: bash

Calculating files size in bash

When we face the problem of calculating size of some files then we often think of du.. But how could we count size of files found by find? We could do this with this simple one-liner:

Find command is simple here. We use here also a POSIX solution – ending “exec” with a plus-sign not a semicolon. This form groups the finding results into sets and then run commands on whole that set. And that’s why we use it here – our wc -c command is run on a whole set of results giving us in the end line the total size of all the files:

We could shorten that a little:

And If we would like to have only the number:

Grep is Your friend

GREP stands for Global Regular Expression Print. I think that every sysop loves grep, grepping and anything that has something in common with grep – this tool makes our lives really easier ;) If You’re not convinced than I think You’re in a good place – maybe the following text will convince You :)

    1. Excluding irrelevant words: sometimes We have to grep for some word but We have to exclude some irrelevant string. E.g. let’s grep for ‘index.html’ but let’s also exclude ‘404’ from this:
    2. egrep (extended grep, same as grep -e or grep –regexp=) allows us to do more powerful search including regular expressions with metacharacters like +, ?, | and ()
    3. Counting results – If we just want to know the number of lines that matched our query – We would use:
    4. Case Insensitive search – by default grep is case sensitive, If we want to make case insensitive search than we use:
    5. Matching eXact word only – by default grepping for Word will return lines containing SomeWord and <strongwordbytheway< strong=””>. If We would like to find only those lines containing exact word Word We should use:

grep -w could be also useful here.

      1. Matching left and right side of the word – to search for instances of string matching Word in the end or start We use \< or \>:Below would match any word starting with access, like access_entry:

        Below would match any word ending with error, like general_error:
  1. Showing context results – sometimes We would like to grep for some errors in logs, but we also would like to view the context of that log entry – e.g. grepping for ‘Relay access denied‘ in Postfix logs to see If that error is occurring with some pattern:
  2. zgrep – this one would grep in the compressed gzip file – just like gunzip -c flog.gz | grep Word:
  3. Coloring matched words – We can highlight our matched words with some color (check man page to see how to set exact color):