2014-01-22 3 views
0

У меня есть каталог с именем MainDir, под которой находятся пять подкаталоги с именем OneDir, TwoDir, ThreeDir, FourDir и FiveDir.Как перечислить все файлы в формате PDF в директории и под подкаталоги в этом каталоге

Наряду с файлами других типов, все шесть каталогов содержат файлы в формате pdf.

Я хочу сделать некоторую обработку этих файлов PDF через мою программу java, которую я вызываю в сценарии unix.

Вход в мою программу java - это одно имя файла PDF.

java MyProgram $pdfFileName 

Как правильно создать цикл в моем сценарии, который перечисляет все файлы в формате PDF в шести каталогов и передает их в переменную pdfFileName один за другим в цикле?

Спасибо за чтение!

ответ

1

Используйте find -exec, как показано ниже:

find MainDir -type f -name "*.pdf" -exec java MainClass {} \; 

Если вы должны использовать xargs, вы должны использовать -n 1 потому, что вы говорите, ваше приложение Java принимает только один файл за раз:

find MainDir -type f -name "*.pdf" | xargs -n 1 java MainClass 
+0

Что делать, если мой Команда java похожа на: java -DLOG_DIR = $ LOG_DIR -Dlog4j.configuration = file: //$CONFIG_DIR/myLog4j.log4j.properties -classpath $ CLASSPATH org.springframework.batch.core.launch.support.CommandLineJobRunner job_config.xml myJob dataDirPath = $ DATA_DIR/outputdata DirPath = $ DATA_DIR/logDirPath = $ LOG_DIR/с еще несколькими аргументами. В этом случае, как бы выглядел бы -exec? – Nik

+0

Не важно, длинное. Просто положите все это после '-exec'. например 'find ... -exec java -DLOG_DIR = $ LOG_DIR -Dlog4j.configuration = file: //$CONFIG_DIR/myLog4j.log4j.properties -classpath $ CLASSPATH ... {} \;' – dogbane

Смежные вопросы