2015-04-12 33 views
1

我想在一個文件目錄中運行一個命令行參數。這些文件按升序編號命名。短腳本來處理一個目錄充滿文件,一個接一個,維護名稱

1815837.xml 
1815838.xml 
1815839.xml 
1815840.xml 

是否可以編寫一些腳本類型,採取目錄中的所有文件,並逐一給他們通過如下命令(斯坦福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-- 

} 

在我看來,這樣的作品,但我不知道這是否是一個真實的東西,或者它是否會在現實生活中工作,我一派,沒找不到那樣的東西,但也許我不知道該問什麼。這是否合理?有人可能會告訴我的方式?


UPDATE

-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

此目錄中有多少個xml文件? – Cyrus

+0

也許是100或200,但我必須這樣做,也許100個目錄 –

回答

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 

雖然我想知道您是要>>還是>進行重定向。前者將追加到輸出文件(如果已經存在),例如來自之前運行的同一個腳本。後者將覆蓋它。

+0

它似乎正在調用代碼,但輸出文件都是空的 –

+0

試試只用於一個文件,用實際名稱替換$ f和$ g ,並查看文件是否仍爲空。我的意思是沒有循環。 – Abhay

+0

在更新下的原始問題中,我發佈了正在發生的事情,它有點像一輛失控的貨運列車,就像我猜它會一直沿着1_output_output_output_output.xml的方式行進,你知道我的意思嗎? –

相關問題