diff --git a/installsystems/image.py b/installsystems/image.py
index 84992986e603724a56f1b0e40fec84a3d7986850..98a9c57fbf14a3b857989f2b386fc7235dfe148a 100644
--- a/installsystems/image.py
+++ b/installsystems/image.py
@@ -617,7 +617,7 @@ class PackageImage(Image):
         '''
         Display filename in the tarball
         '''
-        filelist = self._tarball.getnames(glob_pattern=filename)
+        filelist = self._tarball.getnames(glob_pattern=filename, dir=False)
         if len(filelist) == 0:
             warn("No file matching %s" % filename)
         for filename in filelist:
diff --git a/installsystems/tarball.py b/installsystems/tarball.py
index 155bd9b15e7200153ec0130f2fbd15b350f65104..1540e683ef869a91ca5b161e495aaf5b267fcb41 100644
--- a/installsystems/tarball.py
+++ b/installsystems/tarball.py
@@ -36,16 +36,18 @@ class Tarball(tarfile.TarFile):
         fd = self.extractfile(ti)
         return fd.read() if fd is not None else ""
 
-    def getnames(self, re_pattern=None, glob_pattern=None):
-        lorig = super(Tarball, self).getnames()
+    def getnames(self, re_pattern=None, glob_pattern=None, dir=True):
+        names = super(Tarball, self).getnames()
         # regexp matching
         if re_pattern is not None:
-            return [ tpname for tpname in lorig
-                     if re.match(re_pattern, tpname) ]
+            names = filter(lambda x: re.match(re_pattern, x), names)
         # globbing matching
         if glob_pattern is not None:
-            return fnmatch.filter(lorig, glob_pattern)
-        return lorig
+            names = fnmatch.filter(names, glob_pattern)
+        # dir filering
+        if not dir:
+            names = filter(lambda x: not self.getmember(x).isdir(), names)
+        return names
 
     def size(self):
         '''