Saya mencoba membuat program grafis untuk skrip saya.
Di dalam skrip saya menggunakan tar untuk membuat arsip tar.
Dari program grafis saya mendapatkan nama lengkap file yang ingin saya buat arsip tar.
tar -cvf temp.tar /home/username/dir1/dir2/selecteddir
Arsip tar saya mencakup rumah, nama pengguna, dir1, dir2, dan selecteddir sementara saya ingin tar membuat arsip hanya termasuk selecteddir.
dirname
untuk mengekstrak semuanya hingga "selecteddir" danbasename
untuk mengekstrak "selecteddir". Coba dua perintah dengan $ path sebagai argumen.tar -C /home/username/dir1/dir2 -cvf temp.tar '*.csv'
tidak akan bekerjaAda dua metode yang dapat Anda gunakan untuk mendekati masalah ini.
Yang pertama, menurut saya, lebih mudah. Cukup
cd
ke direktori langsung di atas yang ingin Anda kompres. Dalam hal ini akan menjadidir2
.Cara kedua adalah menggunakan opsi
--transform
yang mengambilsed
ekspresi dan menjalankannya terhadap nama file. Catatan: Anda harus melarikan diri/
dalamsed
ekspresi.sumber
tar: Cowardly refusing to create an empty archive
. Ketika saya memiliki titik, itu mengganggu membuat root berisi direktori bernama.
. Jadi, dekat tapi tidak sempurna.$ cd /home/username/dir1/dir2/ && tar -cvf temp.tar selecteddir *
bekerja untukku. Menggunakan tanda bintang, bukan titik.
. Perbarui: Woops - Meskipun saya kehilangan file yang tersembunyi.Pertama, buka direktori kerja,
Kemudian gunakan sihir
*
:-)sumber
Sebenarnya, saya menemukan masalah menggunakan jawaban Ketan
Bila Anda hanya ingin menyalin semua file hanya di dir2, cukup semua file maka saya pertama kali keluar ide:
Namun, ketika Anda tidak berada di direktori dir2, itu akan menyebabkan masalah karena * akan tar file di diectroy Anda saat ini. Dan saya memperbaiki masalah menggunakan perintah di bawah ini:
sumber
.
sebagai folder root.