короткий скрипт для обработки каталога, полного файлов, один за другим, с сохранением имен

1

Я пытаюсь запустить аргумент командной строки в каталоге, полном файлов. Файлы называются номерами в порядке возрастания.

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

}

На мой взгляд, это работает, но я не знаю, действительно ли это, или если бы это работало в реальной жизни, я искал Google и не нашел ничего подобного, но, может быть, я не знал точно, что спросить. Это разумно? Может кто-нибудь может показать мне дорогу?


ОБНОВИТЬ

-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-файлов в этом каталоге?
  • 0
    может быть 100 или 200, но я должен сделать это для, возможно, 100 каталогов
Теги:
stanford-nlp

1 ответ

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 фактическими именами, и посмотрите, не пуст ли файл. Я имею в виду без петли.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню