diff --git a/wccl-apps/wccl-rules.cpp b/wccl-apps/wccl-rules.cpp
index 63d33c48f74fd11ef4c7782da3c4177acd16d4cd..758f7d9ae1d4eb901b565c1646de35bb6d0170f9 100644
--- a/wccl-apps/wccl-rules.cpp
+++ b/wccl-apps/wccl-rules.cpp
@@ -191,8 +191,8 @@ int main(int argc, char** argv)
 			 "Files to load, looking at the extension to determine type\n")
 			("search-path,P", value(&search_path),
 			 "WCCL resources (lexicons) search path")
-			("corpus-from-stdin,I", value(&corpus_stdin)->zero_tokens(),
-			 "Read corpus from stdin (requires that no corpora filenames are passed)")
+			("input-path,I", value(&corpora_files)->composing(),
+			 "Corpus paths, use '-' for stdin")
 			("input-format,i", value(&input_format)->default_value("xces"),
 			 readers_help.c_str())
 			("output-format,o", value(&output_format)->default_value("ccl"),
@@ -236,7 +236,11 @@ int main(int argc, char** argv)
 			ccl_files.push_back(f);
 		}
 	}
-
+	corpus_stdin = corpus_stdin || (corpora_files.end() != std::find(
+		corpora_files.begin(), corpora_files.end(), std::string("-")));
+	corpora_files.erase(std::remove(
+		corpora_files.begin(), corpora_files.end(), std::string("-")),
+		corpora_files.end());
 	// consider stdin only when no corpus files given
 	corpus_stdin = corpus_stdin && corpora_files.empty();
 
diff --git a/wccl-apps/wccl-run.cpp b/wccl-apps/wccl-run.cpp
index b1bd1463e2f7dda9d6c2b87fc827522d559ed0a6..723aa9c774045d84087750bb6d068c00b50a560a 100644
--- a/wccl-apps/wccl-run.cpp
+++ b/wccl-apps/wccl-run.cpp
@@ -357,8 +357,8 @@ int main(int argc, char** argv)
 			 "Files to load, looking at the extension to determine type")
 			("search-path,P", value(&search_path),
 			 "WCCL resources (lexicons) search path")
-			("corpus-from-stdin,I", value(&corpus_stdin)->zero_tokens(),
-			 "Read corpus from stdin")
+			("input-path,I", value(&corpora_files)->composing(),
+			 "Corpus paths, use '-' for stdin")
 			("quiet,q", value(&quiet)->zero_tokens(),
 			 "Suppress messages")
 			("input-format,i", value(&input_format)->default_value("xces"),
@@ -421,6 +421,11 @@ int main(int argc, char** argv)
 			operator_strings.push_back(f);
 		}
 	}
+	corpus_stdin = corpus_stdin || (corpora_files.end() != std::find(
+		corpora_files.begin(), corpora_files.end(), std::string("-")));
+	corpora_files.erase(std::remove(
+		corpora_files.begin(), corpora_files.end(), std::string("-")),
+		corpora_files.end());
 	if ((corpora_files.empty() && !corpus_stdin) || (operator_strings.empty() && !output_orths)) {
 		std::cerr << "Nothing to do, try " << argv[0] << " -h\n";
 		return 2;