GNU/Linux >> Belajar Linux >  >> Linux

Memformat Ulang Sejumlah Besar File Xml?

Saya memanipulasi sejumlah besar file XML yang tersebar di seluruh struktur direktori bersarang.

Saya mencoba yang berikut ini:

$ find . -name "*.xml" -type f | xargs -- xmllint --format

Masalahnya adalah menghasilkan output XML yang diformat di layar, tetapi tidak mengubah file.

Bagaimana saya bisa mengubah perintah ini sehingga isi file yang sebenarnya berubah?

Jawaban yang Diterima:

Ini dapat dilakukan dari find langsung menggunakan -exec :

find . -name "*.xml" -type f -exec xmllint --output '{}' --format '{}' \;

Apa yang diteruskan ke -exec akan dipanggil sekali per file yang ditemukan dengan parameter template {} diganti dengan nama file saat ini. \; di akhir perintah find baru saja mengakhiri baris.

Penggunaan xargs tidak benar-benar diperlukan dalam kasus ini karena kita perlu memanggil xmllint sekali per file karena nama file input dan output harus ditentukan dalam panggilan yang sama.

xargs akan diperlukan jika perintah yang disalurkan dari find bekerja pada banyak file sekaligus dan daftar itu panjang. Anda tidak dapat melakukannya dalam kasus ini, karena Anda harus meneruskan satu nama file ke --output pilihan xmllint . Tanpa xargs Anda bisa berakhir dengan kesalahan "Daftar Argumen terlalu panjang" jika Anda memproses banyak file. xargs juga mendukung string ganti file dengan -I pilihan:

find . -name "*.xml" -type f | xargs -I'{}' xmllint --output '{}' --format '{}'

Akan melakukan hal yang sama seperti find -exec perintah di atas. Jika salah satu folder Anda memiliki karakter aneh di spasi yang sama, Anda harus menggunakan -0 opsi find dan xargs . Tetapi menggunakan xargs dengan -I menyiratkan opsi -L 1 yang berarti hanya memproses 1 file pada satu waktu, jadi Anda juga dapat langsung menggunakan find dengan -exec .


Linux
  1. Cara Menemukan file besar linux dengan perintah find dan du

  2. Cara memeriksa file besar di konsol

  3. Apa Cara Terbaik Untuk Menghitung Jumlah File Dalam Direktori?

  1. Bagaimana Cara Menemukan File Dengan Subpath Tertentu?

  2. Menghapus file dengan rm menggunakan find dan xargs

  3. Menghitung jumlah file dalam direktori dengan perintah terminal OSX

  1. Bagaimana cara menghitung jumlah baris file yang ditemukan?

  2. du yang menghitung jumlah file/direktori daripada ukuran

  3. Temukan direktori yang berisi sejumlah file