短脚本,一个接一个地处理一个完整文件的目录,维护名称

时间:2015-04-12 07:50:21

标签: java bash stanford-nlp

我正在尝试在一个充满文件的目录上运行命令行参数。文件按数字按升序命名。

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

1 个答案:

答案 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

虽然我想知道您是想要>>还是>进行重定向。如果输出文件已存在,前者将附加到输出文件,例如,从同一脚本的上一次运行开始。后者会覆盖它。