我有多个具有相同模式的文件:file1.txt
、file2.txt
、file3.txt
等。我想为每个文件运行一个 java 程序,如下所示:
java Main file[0-9]*.txt
但它不起作用。是否可以从终端做我想做的事?如果没有,我可以更改程序以读取多个参数,但话又说回来,我需要手动输入所有 100 多个文件。
最佳答案
如上所写,命令
java Main file[0-9]*.txt
将在一个命令中传递所有匹配的文件名 file1.txt
、file2.txt
等。 OP 要求“为每个 文件运行一个 java 程序”,这意味着需要执行一系列命令。要做到这一点(在 bash 或 POSIX shell 中),可以这样做:
for file in file[0-9]*.txt; do [ -f "$file" ] && java Main "$file"; done
分解:
- 这会使用建议的模式与
for file in file[0-9]*.txt
进行循环, - 它检查以确保循环变量
file
找到了一个文件,而不是找到了 none 的通配符表达式, - 为每个相应的文件运行 Java 类
Main
。
关于linux模式匹配程序输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859278/