すべてのxmlファイルで特定のタグのディレクトリを繰り返し検索し、タグ値をgrepします。

すべてのxmlファイルで特定のタグのディレクトリを繰り返し検索し、タグ値をgrepします。

Ubuntu 14.04信頼できるTal。

何百ものxmlファイルを含むことができ、そして順番に多くのxmlファイルを含むことができる "testmag"というディレクトリがあるとしましょう。 xmlファイルの名前はわかりませんが、そのうちの1つにタグが含まれていることはわかっています<dbname>....</dbname>

上記のタグを含むファイルを見つけて、タグ値を端末に出力として提供するにはどうすればよいですか?

ベストアンサー1

find以下は、一致する項目を含むファイルのファイル名も出力するソリューションです。

find . -name "*.xml" -exec grep '<dbname>' {} \;             \
                     -exec echo -e {}"\n" \;                 \
                     | sed 's/<dbname>\(.*\)<\/dbname>/\1/g'

説明する

  1. find . -name "*.xml"現在のディレクトリですべてのxmlファイルを再帰的に見つけます。
  2. -exec grep '<dbname>' {} \;各ファイルの検索パターン<dbname>
  3. -exec echo -e {}"\n" \;echoファイル名+新しい行(-eオプションはecho解釈を作成します\n
  4. | sed 's/<dbname>\(.*\)<\/dbname>/\1/g'sedラベルの間に含まれるフィールドのみを印刷するパイプ出力<dbname></dbname>

echo -e ...注1:必要に応じて新しい行を追加したり、行に下線を付けたりするなど、各ファイルの結果が明確にリストされるように出力形式を指定できます。

.注2:各ファイルのパスは(たとえば)./subfolder1/file.xml。絶対パスが必要な場合はを選択してくださいfind $PWD -name ...

おすすめ記事