Скрипт Bash для перемещения каталога

#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 убедитесь, что заданный шаблон соответствует всему, а не отдельному слову в отдельности

Надеюсь, это поможет!