Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do I compare the timestamp of two files?

I tried this but it doesn't work:

file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];

I printed both the time stamps, in order and it gives me

./ line 13: [1273143480: command not found

So basically if comparison is not working, I guess. Or if there is any other nice way than what I am doing, please let me know. What do I have to change?

share|improve this question
Your code needs spaces around the square brackets. – Jonathan Leffler May 6 '10 at 15:02
The test mechanism is very complex compared with the built in mechanism for comparing time stamps. – Jonathan Leffler May 6 '10 at 15:03

The operators for comparing time stamps are:

[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]

The mnemonic is easy: 'newer than' and 'older than'.

share|improve this answer

This is because of some missing spaces. [ is a command, so it must have spaces around it and the ] is an special parameter to tell it where its comand line ends. So, your test line should look like:

if [ $file1time -gt $file2time ];
share|improve this answer
[ is a test command -- see the "CONDITIONAL EXPRESSIONS" section of the bash man page. There's also a standalone executable in /usr/bin/test and /usr/bin/[, but if you're using bash and not using the full path, yo u're using the shell builtin. – Doug Harris May 6 '10 at 13:11
@Doug Harris +1 for the more complete explanation about the topic. – goedson May 6 '10 at 13:18

if is not magic. It attempts to run the command passed to it, and checks if it has a zero exit status. It also doesn't handle non-existent arguments well, which is why you should quote variables being used in it.

if [ "$file1time" -gt "$file2time" ]
share|improve this answer
if ( [ $file1time -gt $file2time ] );
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.