#bash #unix
#bash #unix
Вопрос:
У меня есть каталог с файлами XML и другими каталогами. Все остальные каталоги содержат XML-файлы и подкаталоги и т.д.
Мне нужно написать скрипт (возможно, bash), который выполняется для каждого каталога java XMLBeautifier directory
и, поскольку мои навыки в написании сценариев bash немного бесполезны, я был бы очень признателен за небольшую помощь.
Ответ №1:
Если вам нужно получить каталоги, вы можете использовать:
$ find . -type d
просто передайте это в свою программу следующим образом:
$ find . -type d | xargs java XMLBeautifier
Другим подходом было бы получить все файлы с find
и передать их в вашу программу следующим образом:
$ find . -name "*.xml" | xargs java XMLBeautifier
Это берет все .xml
файлы из текущего каталога и рекурсивно через все подкаталоги. Затем передает их один за другим с помощью xargs
to java XMLBeautifier
.
Комментарии:
1. Как ни странно, не все XML-файлы имеют расширение .xml, но все файлы являются XML-файлами
2. Я собирался опубликовать только это. Опереди меня в этом:(
3. @Michael, ну, ты можешь просто изменить на то, что тебе подходит. Например, если все файлы в структуре каталогов, то просто
find . -name "*"
4. Если средство улучшения принимает только один аргумент (например, имя каталога), тогда используйте второй подход, описанный выше, но добавьте
-n 1
кxargs
вызову.
Ответ №2:
Find — потрясающий инструмент… однако, если вы не уверены в имени файла, но имеете смутное представление о том, что содержит этот XML-файл, вы можете использовать grep.
Например, если вы точно знаете, что все ваши XML-файлы содержат фразу «правильный XML-файл» (вы можете изменить эту фразу на то, что считаете нужным), тогда запустите следующее в своей командной строке…
grep -IRw "correct xml file" /path/to/directory/*
-Опция I выполняет поиск в файле и возвращает имя файла при совпадении с шаблоном
-Опция R достигает вашего каталога рекурсивно
-w убедитесь, что заданный шаблон соответствует всему, а не отдельному слову в отдельности
Надеюсь, это поможет!