我正在尝试在一个充满文件的目录上运行命令行参数。文件按数字按升序命名。
1815837.xml
1815838.xml
1815839.xml
1815840.xml
是否可以编写某种脚本来获取目录中的所有文件,并逐个通过以下命令(Stanford NER)提供它们:
java -mx600m -cp /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz -textFile 1815838.xml -outputFormat inlineXML >> 1815838_output.xml
我正在那里调用的代码将结果输出到控制台,所以我将它传递给一个特别命名的文件,即>> 1815838_output.xml
我保持这个命名约定很重要。
在目录中的每个文件上运行该代码并使用简短的java程序或bash脚本相应地保存输出是否可行?它会是什么样子?
此问题与previous inquiry切线相关。
我的朦胧概念是这样的:
*X* = '1815838'
while(still files in directory)
{
java -mx600m -cp stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier english.all.3class.distsim.crf.ser.gz -textFile *X*.xml -outputFormat inlineXML >> *X* + '_output.xml'
X--
}
在我看来,这是有效的,但我不知道这是真的还是现实生活中有用,我用谷歌搜索并没有找到类似的东西,但也许我不知道到底是什么问。这合理吗?有人可以给我指路吗?
更新
-rwxr-xr-x 1 matthias matthias 3.8K Apr 10 20:35 1815851.xml*
-rw-r--r-- 1 matthias matthias 4.6K Apr 12 16:25 1815851_output.xml
-rw-r--r-- 1 matthias matthias 5.3K Apr 12 16:25 1815851_output_output.xml
-rwxr-xr-x 1 matthias matthias 3.3K Apr 10 20:35 1815852.xml*
-rw-r--r-- 1 matthias matthias 4.5K Apr 12 16:25 1815852_output.xml
-rw-r--r-- 1 matthias matthias 5.6K Apr 12 16:25 1815852_output_output.xml
-rwxr-xr-x 1 matthias matthias 2.5K Apr 10 20:35 1815853.xml*
-rw-r--r-- 1 matthias matthias 2.9K Apr 12 16:25 1815853_output.xml
-rw-r--r-- 1 matthias matthias 3.3K Apr 12 16:25 1815853_output_output.xml
-rwxr-xr-x 1 matthias matthias 2.4K Apr 10 20:35 1815854.xml*
-rw-r--r-- 1 matthias matthias 2.7K Apr 12 16:25 1815854_output.xml
-rw-r--r-- 1 matthias matthias 2.9K Apr 12 16:25 1815854_output_output.xml
-rwxr-xr-x 1 matthias matthias 2.8K Apr 10 20:35 1815855.xml*
-rw-r--r-- 1 matthias matthias 3.6K Apr 12 16:25 1815855_output.xml
-rw-r--r-- 1 matthias matthias 4.4K Apr 12 16:26 1815855_output_output.xml
没有循环,但奇怪的是,没有写入输出
g="$(1816001.xml $f .xml)_output.xml"
java -mx600m -cp /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz -textFile $f -outputFormat inlineXML > $g
答案 0 :(得分:1)
这很容易做到:假设您当前的目录是文件所在的位置:
for f in *.xml ; do
echo $f | grep -q '_output\.xml$' && continue # skip output files
g="$(basename $f .xml)_output.xml"
command a_lot_of_arguments $f more_arguments >> $g
done
虽然我想知道您是想要>>
还是>
进行重定向。如果输出文件已存在,前者将附加到输出文件,例如,从同一脚本的上一次运行开始。后者会覆盖它。