This title might sound strange with two unrelated tasks, but there is a story behind it. I was working on some data processing application that was converting files to some other format. After checking the code, I found that it takes about 1 second to convert a single file and I wanted to know how long will it take to convert all the files.

It isn't really difficult. Just run find somedir | wc -l and we get the number of seconds. Except that I already knew there are a lot of files so I split that in two separate steps:

List all the files

$ find somedir > files.txt

I know, it would be more correct if I ran

$ find somedir -type f > files.txt

but the impact was rather small.

Then I can run

wc -l files.txt

I ran the first command and it did not end.

I ran wc -l files.txt several times and I saw the file was growing and growing and it passed the 1,000,000 and I started to wonder how many days are all those seconds.

One day is 86,400 seconds that can be calculated as (( x = 60*60*24*72 )); echo $x

Bash expression

Anyway, here is the expression I came up with:

Count the lines in a file and divide it by number of seconds in a day which is 86400

let "x=$(wc -l find.txt | cut -d' ' -f1)/86400"; echo $x
expr $(wc -l find.txt | cut -d' ' -f1) / 86400