Написание скрипта bash для перебора каталогов - PullRequest
0 голосов
/ 21 мая 2018

Я никогда раньше не писал сценариев, поэтому я совершенно новичок в этом.Мне нужно выполнить перевод XSLT для нескольких файлов в нескольких каталогах.Я пытаюсь сделать это на Cygwin.

В настоящее время у меня есть несколько файлов (все с одинаковым именем, metadata.xml) в разных каталогах.Из моего текущего каталога путь - data / Foldername / metadata.xml (при этом foldernames является уникальным).

Псевдокод для этого будет:

Для всех файлов в /data/Foldername/metadata.xml xsltproc (metadata.xml в текущем каталоге) translation.xslt> (вывод должен быть foldernameтекущий файл в формате .rdf)

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Я думаю, это то, что вы ищете:

#!/bin/bash
files=`find ./ -name 'metadata.xml'`
for item in $files
do
  xsltproc $item translation.xslt > ${item%/*}.rdf
done
0 голосов
/ 22 мая 2018
#!/bin/bash
search_dir="Path to data directory"
for item in "$search_dir"/*
do
  xsltproc "$item"/translation.xslt "$item"/metadata.xml > "$item"/"$item".rdf
done

это должно решить ваш запрос ... Как вы сказали, вы будете использовать терминал Cygwin для выполнения сценария оболочки ... поэтому, пожалуйста, не создавайте и не изменяйте ваш сценарий в DOS или Windows-системе, так как он содержитсимволы возврата каретки (то есть "\ r"), которые не нравятся Linux / Unix, для получения дополнительной информации, связанной с этим, обратитесь по ссылке файл bash возвращает неожиданный токен `$ 'do \ r' ' для xsltproc использование вы можете сослаться на ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...