linux 模式匹配程序输入
linux pattern match program input
我有多个具有相同模式的文件: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 请求 "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
。
我有多个具有相同模式的文件: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 请求 "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
。