diff --git modules/system.views.inc modules/system.views.inc
index 1ae4cd5..5fa7585 100644
--- modules/system.views.inc
+++ modules/system.views.inc
@@ -121,6 +121,17 @@ function system_views_data() {
     ),
   );
 
+  // extension
+  $data['files']['extension'] = array(
+    'title' => t('File extension'),
+    'help' => t('The file extension of the file.'),
+    'real field' => 'filename',
+    'field' => array(
+      'handler' => 'views_handler_field_file_extension',
+      'click sortable' => FALSE,
+     ),
+  );
+
   // filesize
   $data['files']['filesize'] = array(
     'title' => t('Size'),
@@ -189,6 +200,9 @@ function system_views_handlers() {
       'views_handler_field_file_status' => array(
         'parent' => 'views_handler_field',
       ),
+      'views_handler_field_file_extension' => array(
+        'parent' => 'views_handler_field',
+      ),
       'views_handler_filter_file_status' => array(
         'parent' => 'views_handler_filter_in_operator',
       ),
diff --git modules/system/views_handler_field_file_extension.inc modules/system/views_handler_field_file_extension.inc
new file mode 100644
index 0000000..34a9abf
--- /dev/null
+++ modules/system/views_handler_field_file_extension.inc
@@ -0,0 +1,15 @@
+<?php
+// $Id$
+/**
+ * @file
+ * Returns a pure file extension of the file, for example 'module'.
+ */
+
+class views_handler_field_file_extension extends views_handler_field {
+  function render($values) {
+    $value = $values->{$this->field_alias};
+    if (preg_match('/\.([^\.]+)$/', $value, $match)) {
+      return check_plain($match[1]);
+    }
+  }
+}
