GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan find dan tar dengan file dengan karakter khusus pada namanya

Gunakan -T fitur tar untuk memintanya membaca daftar file dari file lain (tar memperlakukan setiap baris sebagai file terpisah).

Anda kemudian dapat menggunakan <() notasi agar shell Anda menghasilkan file pseudo dari output perintah:

tar cf ctlfiles.tar -T <(find /home/db -name "*.ctl")

Jika shell Anda tidak mendukung <() notasi, Anda dapat menggunakan file sementara:

find /home/db -name "*.ctl" > ctlfile-list
tar cf ctlfiles.tar -T ctlfile-list
rm ctlfile-list

Anda dapat menggunakan fitur -print0 dari find dengan fitur -0 dari xargs, seperti ini:

find /home/db -name '*.ctl' -print0 | xargs -0 tar -cf ctlfiles.tar

-print0 (itu adalah tanda hubung-cetak-nol) memberi tahu find untuk menggunakan null sebagai pembatas antara jalur alih-alih spasi, dan -0 (itu adalah tanda hubung nol) memberi tahu xargs untuk mengharapkan hal yang sama.

Diedit untuk menambahkan:

Jika Anda memiliki banyak file, xargs mungkin memanggil tar lebih dari sekali. Lihat komentar untuk mengetahui cara mengatasinya, atau buat find aktifkan tar secara langsung, seperti ini, yang berfungsi dengan sejumlah file, meskipun memiliki spasi atau baris baru di namanya:

rm -f ctlfiles.tar
find /home/db -name '*.ctl' -exec tar -rf ctlfiles.tar {} +

Ketika argumen yang mengikuti "-T" adalah "-", daftar file diambil dari stdin. Versi tar terbaru biasanya mendukung opsi "-null", yang menunjukkan bahwa file diberikan dalam sumber yang ditentukan oleh "-T " opsi dipisahkan dengan null.

Oleh karena itu berikut ini berfungsi dengan jumlah file yang berubah-ubah, mungkin berisi karakter baris baru:

find /home/db -name '*.ctl' -print0 | tar --null -T - -cf ctlfiles.tar

Linux
  1. Temukan file dan direktori terbesar di Linux

  2. Menggunakan perintah find Linux – Penggunaan dengan contoh

  3. Menggunakan Sed Dengan Karakter Khusus?

  1. Bagaimana Cara Mengompres dan Mengekstrak File Menggunakan Perintah tar di Linux?

  2. Temukan dan salin file

  3. Temukan file dan tar (dengan spasi)

  1. Menemukan file yang dapat dieksekusi menggunakan ls dan grep

  2. Temukan file dengan karakter windows ilegal dalam namanya di Linux

  3. Menghapus file dengan rm menggunakan find dan xargs