Index: src/org/mediawiki/importer/ExactListFilter.java
===================================================================
--- src/org/mediawiki/importer/ExactListFilter.java	(revision 26176)
+++ src/org/mediawiki/importer/ExactListFilter.java	(working copy)
@@ -33,6 +33,6 @@
 	}
 	
 	protected boolean pass(Page page) {
-		return list.containsKey(page.Title.toString());
+		return list.containsKey(page.Title.toString()) ^ negate;
 	}
 }
Index: src/org/mediawiki/importer/ListFilter.java
===================================================================
--- src/org/mediawiki/importer/ListFilter.java	(revision 26176)
+++ src/org/mediawiki/importer/ListFilter.java	(working copy)
@@ -33,10 +33,18 @@
 
 public class ListFilter extends PageFilter {
 	protected HashMap list;
+	protected boolean negate;
 	
 	public ListFilter(DumpWriter sink, String sourceFileName) throws IOException {
 		super(sink);
 		list = new HashMap();
+		if (sourceFileName.startsWith("!")) {
+		    negate = true;
+		    sourceFileName = sourceFileName.substring(1);
+		} else {
+		    negate = false;
+		}
+		
 		BufferedReader input = new BufferedReader(new InputStreamReader(
 			new FileInputStream(sourceFileName), "utf-8"));
 		String line = input.readLine();
@@ -55,7 +63,7 @@
 	}
 	
 	protected boolean pass(Page page) {
-		return list.containsKey(page.Title.subjectPage().toString())
-			|| list.containsKey(page.Title.talkPage().toString());
+		return (list.containsKey(page.Title.subjectPage().toString())
+			|| list.containsKey(page.Title.talkPage().toString())) ^ negate;
 	}
 }
Index: README
===================================================================
--- README	(revision 26176)
+++ README	(working copy)
@@ -108,10 +108,11 @@
       (e.g. 2005-12-31T23:59:59Z).
   --filter=after:<timestamp>
       Skips all revisions before the specified timestamp.
-  --filter=list:<list-filename>
-      Excludes all pages whose titles do not appear in the given file.
-      Use one title per line; blanks and lines starting with # are
-      ignored. Talk and subject pages of given titles are both matched.
+  --filter=list:[!]<list-filename>
+      Excludes all pages whose titles do not appear in the given file
+      (or do appear with "!"). Use one title per line; blanks and lines
+      starting with # are ignored. Talk and subject pages of given titles
+      are both matched.
   --filter=exactlist:<list-filename>
       As above, but does not try to match associated talk/subject pages.
   --filter=revlist:<list-filename>
