用于处理一个充满文件的目录的简短脚本,一个接一个,维护名称
short script to process a directory full of files, one by one, maintaining names
我正在尝试 运行 一个充满文件的目录的命令行参数。这些文件按升序排列的数字命名。
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 脚本相应地保存输出?它会是什么样子?
此问题与 无关。
我模糊的概念是这样的:
*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
这很容易做到:假设您当前的目录是文件所在的位置:
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
尽管我想知道您是要 >>
还是 >
进行重定向。前者将附加到输出文件(如果它已经存在),例如来自同一脚本的先前 运行。后者会覆盖它。
我正在尝试 运行 一个充满文件的目录的命令行参数。这些文件按升序排列的数字命名。
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 脚本相应地保存输出?它会是什么样子?
此问题与
我模糊的概念是这样的:
*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
这很容易做到:假设您当前的目录是文件所在的位置:
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
尽管我想知道您是要 >>
还是 >
进行重定向。前者将附加到输出文件(如果它已经存在),例如来自同一脚本的先前 运行。后者会覆盖它。