GNU/Linux >> Belajar Linux >  >> Linux

tar -C dengan pola file wildcard

Masalahnya adalah, *.xml diinterpretasikan oleh shell, bukan oleh tar. Oleh karena itu, file xml yang ditemukannya (jika ada) ada di direktori tempat Anda menjalankan perintah tar.

Anda harus menggunakan operasi multi-tahap (mungkin melibatkan pipa) untuk memilih file yang Anda inginkan dan kemudian melakukan tar pada file tersebut.

Cara termudah adalah dengan cd ke dalam direktori tempat file-file tersebut berada:

$ (cd /path/to/file && tar -cf /path/to/example.tar *.xml)

harus bekerja.

Tanda kurung mengelompokkan perintah bersama-sama, jadi setelah selesai Anda akan tetap berada di direktori asli Anda. &&berarti tar hanya akan berjalan jika cd awal berhasil.


Dalam salah satu upaya Anda:

tar -cf example.tar -C /path/to/file "*.xml"

karakter * memang diteruskan ke tar. Masalahnya, bagaimanapun, tar hanya mendukung pencocokan karakter pengganti pada nama anggota arsip. Jadi, meskipun Anda dapat menggunakan karakter pengganti saat mengekstraksi atau mencantumkan anggota dari arsip, Anda tidak dapat menggunakan karakter pengganti saat membuat arsip.

Dalam situasi seperti itu, saya sering mencari (seperti yang sudah Anda sebutkan). Jika Anda menemukan GNU, ada opsi bagus untuk mencetak hanya jalur relatif, menggunakan opsi -printf:

find '/path/to/file' -maxdepth 1 -name '*.xml' -printf '%P\0' \
| tar --null -C '/path/to/file' --files-from=- -cf 'example.tar'

Jawaban yang diterima mengasumsikan file diambil dari satu direktori. Jika Anda menggunakan beberapa -C opsi, maka Anda memerlukan pendekatan yang lebih umum. Perintah berikut membuat shell memperluas nama file, yang kemudian diteruskan ke tar .

tar -cf example.tar -C /path/to/file $(cd /path/to/file ; echo *.xml)

Linux
  1. Bagaimana cara melindungi kata sandi file .tgz dengan tar di Unix?

  2. tar:baca singkat

  3. Apakah mv dengan wildcard masih atomik

  1. Memulai dengan ls

  2. Bagaimana Cara Membuat File Zip Dari Isi Folder Dengan Pola Nama Tertentu?

  3. Membuka file .tar.gz dengan satu perintah

  1. Peringatan dengan nftw

  2. Cara menggabungkan perintah 'tar' dengan 'find'

  3. buat tar dengan banyak direktori dan lokasi file