diff --git a/rsync_client.py b/rsync_client.py
index 05991f9..e9e569b 100644
--- a/rsync_client.py
+++ b/rsync_client.py
@@ -4,6 +4,7 @@
 
 import datetime
 import os
+import re
 import subprocess
 import tempfile
 
@@ -114,23 +115,32 @@
         cmd = 'rsync {opts} {extra} {source} {dest}'.format(**(locals()))
         return self._shell(cmd)
 
-    def rsync_ls(self, dirname=None):
+    def _rsync_ls(self, dirname=None, pattern=r'.*', opts=''):
         if dirname is None:
             dirname = '{}/'.format(self.root_path)
         dest = '{}/{}'.format(self.url, dirname)
-        opts = '-l'
         extra = self.rsync_extra_params + ' --no-v'
         exitcode, out, err = self._do_rsync(dest=dest, opts=opts, extra=extra)
-        out = [_ for _ in out.splitlines() if _.split()[-1] != '.']
+        regexp = re.compile(pattern)
+        out = [_ for _ in out.splitlines()
+               if (_.split()[-1] != '.') and
+               (regexp.match(_.split()[-1]) is not None)]
         return exitcode, out, err
 
-    def rsync_ls_dirs(self, dirname):
-        exitcode, out, err = self.rsync_ls(dirname)
+    def rsync_ls(self, dirname, pattern=r'.*'):
+        exitcode, out, err = self._rsync_ls(dirname, pattern=pattern)
+        out = [_.split()[-1] for _ in out]
+        return exitcode, out, err
+
+    def rsync_ls_dirs(self, dirname, pattern=r'.*'):
+        exitcode, out, err = self._rsync_ls(dirname, pattern=pattern)
         out = [_.split()[-1] for _ in out if _.startswith('d')]
         return exitcode, out, err
 
-    def rsync_ls_symlinks(self, dirname):
-        exitcode, out, err = self.rsync_ls(dirname)
+    def rsync_ls_symlinks(self, dirname, pattern=r'.*'):
+        exitcode, out, err = self._rsync_ls(dirname,
+                                            pattern=pattern,
+                                            opts='-l')
         out = [_.split()[-3:] for _ in out if _.startswith('l')]
         out = [[_[0], _[-1]] for _ in out]
         return exitcode, out, err
