diff --git a/IPython/deathrow/ipy_profile_sh.py b/IPython/deathrow/ipy_profile_sh.py
index a860637..f394ef1 100644
--- a/IPython/deathrow/ipy_profile_sh.py
+++ b/IPython/deathrow/ipy_profile_sh.py
@@ -115,9 +115,6 @@ def main():
 
             ip.define_alias(key.replace('.',''), cmd)
 
-    # mglob combines 'find', recursion, exclusion... '%mglob?' to learn more
-    ip.load("IPython.external.mglob")
-
     # win32 is crippled w/o cygwin, try to help it a little bit
     if sys.platform == 'win32':
         if 'cygwin' in os.environ['PATH'].lower():
diff --git a/IPython/external/mglob/__init__.py b/IPython/external/mglob/__init__.py
deleted file mode 100644
index 28494fd..0000000
--- a/IPython/external/mglob/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-try:
-    from mglob import *
-except ImportError:
-    from _mglob import *
diff --git a/IPython/external/mglob/_mglob.py b/IPython/external/mglob/_mglob.py
deleted file mode 100644
index f4da11c..0000000
--- a/IPython/external/mglob/_mglob.py
+++ /dev/null
@@ -1,233 +0,0 @@
-r""" mglob - enhanced file list expansion module
-
-Use as stand-alone utility (for xargs, `backticks` etc.),
-or a globbing library for own python programs. Globbing the sys.argv is something
-that almost every Windows script has to perform manually, and this module is here
-to help with that task. Also Unix users will benefit from enhanced modes
-such as recursion, exclusion, directory omission...
-
-Unlike glob.glob, directories are not included in the glob unless specified
-with 'dir:'
-
-'expand' is the function to use in python programs. Typical use
-to expand argv (esp. in windows)::
-
-    try:
-        import mglob
-        files = mglob.expand(sys.argv[1:])
-    except ImportError:
-        print "mglob not found; try 'easy_install mglob' for extra features"
-        files = sys.argv[1:]
-
-Note that for unix, shell expands *normal* wildcards (*.cpp, etc.) in argv.
-Therefore, you might want to use quotes with normal wildcards to prevent this
-expansion, in order for mglob to see the wildcards and get the wanted behaviour.
-Not quoting the wildcards is harmless and typically has equivalent results, though.
-
-Author: Ville Vainio <vivainio@gmail.com>
-License: MIT Open Source license
-
-"""
-
-#Assigned in variable for "usage" printing convenience"
-
-globsyntax = """\
-    This program allows specifying filenames with "mglob" mechanism.
-    Supported syntax in globs (wilcard matching patterns)::
-
-     *.cpp ?ellowo*
-         - obvious. Differs from normal glob in that dirs are not included.
-           Unix users might want to write this as: "*.cpp" "?ellowo*"
-     rec:/usr/share=*.txt,*.doc
-         - get all *.txt and *.doc under /usr/share,
-           recursively
-     rec:/usr/share
-         - All files under /usr/share, recursively
-     rec:*.py
-         - All .py files under current working dir, recursively
-     foo
-         - File or dir foo
-     !*.bak readme*
-         - readme*, exclude files ending with .bak
-     !.svn/ !.hg/ !*_Data/ rec:.
-         - Skip .svn, .hg, foo_Data dirs (and their subdirs) in recurse.
-           Trailing / is the key, \ does not work! Use !.*/ for all hidden.
-     dir:foo
-         - the directory foo if it exists (not files in foo)
-     dir:*
-         - all directories in current folder
-     foo.py bar.* !h* rec:*.py
-         - Obvious. !h* exclusion only applies for rec:*.py.
-           foo.py is *not* included twice.
-     @filelist.txt
-         - All files listed in 'filelist.txt' file, on separate lines.
-     "cont:class \wak:" rec:*.py
-         - Match files containing regexp. Applies to subsequent files.
-           note quotes because of whitespace.
- """
-
-
-__version__ = "0.2"
-
-
-import os,glob,fnmatch,sys,re
-
-def expand(flist,exp_dirs = False):
-    """ Expand the glob(s) in flist.
-
-    flist may be either a whitespace-separated list of globs/files
-    or an array of globs/files.
-
-    if exp_dirs is true, directory names in glob are expanded to the files
-    contained in them - otherwise, directory names are returned as is.
-
-    """
-    if isinstance(flist, basestring):
-        import shlex
-        flist = shlex.split(flist)
-    done_set = set()
-    denied_set = set()
-    cont_set = set()
-    cur_rejected_dirs = set()
-
-    def recfind(p, pats = ["*"]):
-        denied_dirs = [os.path.dirname(d) for d in denied_set if d.endswith("/")]
-        for (dp,dnames,fnames) in os.walk(p):
-            # see if we should ignore the whole directory
-            dp_norm = dp.replace("\\","/") + "/"
-            deny = False
-            # do not traverse under already rejected dirs
-            for d in cur_rejected_dirs:
-                if dp.startswith(d):
-                    deny = True
-                    break
-            if deny:
-                continue
-
-
-            #print "dp",dp
-            bname = os.path.basename(dp)
-            for deny_pat in denied_dirs:
-                if fnmatch.fnmatch( bname, deny_pat):
-                    deny = True
-                    cur_rejected_dirs.add(dp)
-                    break
-            if deny:
-                continue
-
-
-            for f in fnames:
-                matched = False
-                for p in pats:
-                    if fnmatch.fnmatch(f,p):
-                        matched = True
-                        break
-                if matched:
-                    yield os.path.join(dp,f)
-
-    def once_filter(seq):
-        for it in seq:
-            p = os.path.abspath(it)
-            if p in done_set:
-                continue
-            done_set.add(p)
-            deny = False
-            for deny_pat in denied_set:
-                if fnmatch.fnmatch(os.path.basename(p), deny_pat):
-                    deny = True
-                    break
-            if cont_set:
-                try:
-                    cont = open(p).read()
-                except IOError:
-                    # deny
-                    continue
-                for pat in cont_set:
-                    if not re.search(pat,cont, re.IGNORECASE):
-                        deny = True
-                        break
-
-            if not deny:
-                yield it
-        return
-
-    res = []
-
-    for ent in flist:
-        ent = os.path.expanduser(os.path.expandvars(ent))
-        if ent.lower().startswith('rec:'):
-            fields = ent[4:].split('=')
-            if len(fields) == 2:
-                pth, patlist = fields
-            elif len(fields) == 1:
-                if os.path.isdir(fields[0]):
-                    # single arg is dir
-                    pth, patlist = fields[0], '*'
-                else:
-                    # single arg is pattern
-                    pth, patlist = '.', fields[0]
-
-            elif len(fields) == 0:
-                pth, pathlist = '.','*'
-
-            pats = patlist.split(',')
-            res.extend(once_filter(recfind(pth, pats)))
-        # filelist
-        elif ent.startswith('@') and os.path.isfile(ent[1:]):
-            res.extend(once_filter(open(ent[1:]).read().splitlines()))
-        # exclusion
-        elif ent.startswith('!'):
-            denied_set.add(ent[1:])
-        # glob only dirs
-        elif ent.lower().startswith('dir:'):
-            res.extend(once_filter(filter(os.path.isdir,glob.glob(ent[4:]))))
-        elif ent.lower().startswith('cont:'):
-            cont_set.add(ent[5:])
-        # get all files in the specified dir
-        elif os.path.isdir(ent) and exp_dirs:
-            res.extend(once_filter(filter(os.path.isfile,glob.glob(ent + os.sep+"*"))))
-
-        # glob only files
-
-        elif '*' in ent or '?' in ent:
-            res.extend(once_filter(filter(os.path.isfile,glob.glob(ent))))
-
-        else:
-            res.extend(once_filter([ent]))
-    return res
-
-
-def test():
-    assert (
-        expand("*.py ~/.ipython/*.py rec:/usr/share/doc-base") ==
-        expand( ['*.py', '~/.ipython/*.py', 'rec:/usr/share/doc-base'] )
-        )
-
-def main():
-    if len(sys.argv) < 2:
-        print globsyntax
-        return
-
-    print "\n".join(expand(sys.argv[1:])),
-
-
-def mglob(self, arg):
-    from IPython.utils.text import SList
-    if arg.strip():
-        return SList(expand(arg))
-    print "Please specify pattern!"
-    print globsyntax
-
-
-mglob.__doc__ = globsyntax
-
-
-def init_ipython(ip):
-    """ register %mglob for IPython """
-
-    ip.function_as_magic(mglob)
-
-
-# test()
-if __name__ == "__main__":
-    main()
diff --git a/IPython/quarantine/ipy_fsops.py b/IPython/quarantine/ipy_fsops.py
index 0a7f9fa..0e7bffa 100644
--- a/IPython/quarantine/ipy_fsops.py
+++ b/IPython/quarantine/ipy_fsops.py
@@ -13,6 +13,14 @@ commands (that e.g. don't understand / as path separator). These can
 do some useful tricks on their own, though (like use 'mglob' patterns).
 
 Not to be confused with ipipe commands (ils etc.) that also start with i.
+
+QUARANTINE, NEEDS UPDATING TO THE NEW IPYTHON API TO WORK
+
+this depends on mglob that used to be in externals,
+if this code is updated to run again with current IPython, you may need to
+reintroduce that file back. In doing so, look for the possibility of achieving
+the same effect only with the standard library (which may have improved by now,
+since we currently depend on Python 2.6).
 """
 
 from IPython.core import ipapi
@@ -243,4 +251,4 @@ def test_pathobj():
     cwd = PathObj('.')
     ip.push("rootdir startmenu cwd")
 
-#test_pathobj()
\ No newline at end of file
+#test_pathobj()
diff --git a/docs/source/interactive/shell.txt b/docs/source/interactive/shell.txt
index a1690c7..b4d6a00 100644
--- a/docs/source/interactive/shell.txt
+++ b/docs/source/interactive/shell.txt
@@ -138,17 +138,6 @@ If you want to store the alias so that it will always be available, do '%store p
  Alias stored: psftp (0, 'c:\\opt\\PuTTY\\psftp.exe')
  ...
 
-mglob
------
-
-Provide the magic function %mglob, which makes it easier (than the 'find' command) to collect (possibly recursive) file lists. Examples::
-
- [c:/ipython]|9> mglob *.py
- [c:/ipython]|10> mglob *.py rec:*.txt
- [c:/ipython]|19> workfiles = %mglob !.svn/ !.hg/ !*_Data/ !*.bak rec:.
-
-Note that the first 2 calls will put the file list in result history (_, _9, _10), and the last one will assign it to 'workfiles'.
-
 
 Prompt customization
 ====================