linux 模式匹配程序输入

linux pattern match program input

我有多个具有相同模式的文件:file1.txtfile2.txtfile3.txt 等。我想 运行 一个 java 程序用于每个文件,像这样:

java Main file[0-9]*.txt

但它不起作用。是否可以从终端做我想做的事?如果没有,我可以更改程序以读取多个参数,但话又说回来,我需要手动输入所有 100 多个文件。

如上所写,命令

java Main file[0-9]*.txt

将在一个命令中传递所有匹配的文件名 file1.txtfile2.txt 等。 OP 请求 "run a java program for each file",这意味着需要一系列命令。要做到这一点(在 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 class Main