GNU/Linux >> Belajar Linux >  >> Linux

Kompres setiap file dalam direktori menjadi file terkompresi sendiri

Solusi 1:

Menempatkan setiap file ke dalam file tar terpisah tidak masuk akal dalam skenario ini. Anda dapat menggunakan gzip untuk mengompresnya secara langsung:

gzip *

akan menghasilkan file1.out.gz , file2.out.gz dll.

Anda akan menggunakan tar hanya jika Anda membutuhkan arsip terkompresi sebagai satu file.

Jika Anda memerlukan arsip tar untuk setiap file, Anda dapat membuatnya seperti ini:

for i in *; do tar -czf $i.tar.gz $i; done

Solusi 2:

Untuk membangun jawaban @SvenW (yang hanya akan berfungsi pada direktori saat ini), jika Anda memiliki sejumlah besar file atau ingin melakukannya pada struktur direktori rekursif, Anda juga dapat menggunakan

find . -type f -exec gzip \{\} \;

dan jika Anda perlu memasukkan hasilnya ke direktori lain (dalam contoh ini, ../target ) dan tidak ingin menghapus yang asli, Anda dapat melakukan sesuatu seperti:

find . -type f -print | while read fname ; do
    mkdir -p "../target/`dirname \"$fname\"`"
    gzip -c "$fname" > "../target/$fname.gz"
done

Linux
  1. Cara tar (kompres) file, tidak termasuk file atau direktori tertentu

  2. Bagaimana Cara Glob Setiap File Tersembunyi Kecuali Direktori Saat Ini Dan Induk?

  3. Bagaimana Cara Mencatat Setiap Perintah yang Diketik Ke Bash Dan Setiap Operasi File?

  1. Bagaimana Mengompresi Banyak File Menjadi Arsip .xz?

  2. Cara mengompres/dekompresi di Linux

  3. Memperbarui satu file dalam tar terkompresi

  1. Mengecualikan direktori saat membuat file .tar.gz

  2. Untar file pada laporan Solaris - tar:directory checksum error

  3. Cara gzip semua file di semua sub-direktori menjadi satu file terkompresi di bash