GNU/Linux >> Belajar Linux >  >> Linux

Cara gzip semua file di semua sub-direktori di bash

Tidak perlu loop atau apa pun selain find dan gzip :

find . -type f ! -name '*.gz' -exec gzip "{}" \;

Ini menemukan semua file biasa di dalam dan di bawah direktori saat ini yang namanya tidak diakhiri dengan .gz ekstensi (yaitu, semua file yang belum dikompresi). Itu memanggil gzip pada setiap file satu per satu.

Edit, berdasarkan komentar dari user unknown :

Kurung kurawal ({} ) diganti dengan nama file, yang diteruskan secara langsung, sebagai satu kata, ke perintah berikut -exec seperti yang Anda lihat di sini:

$ touch foo
$ touch "bar baz"
$ touch xyzzy
$ find . -exec echo {} \;

./foo
./bar baz
./xyzzy

find . -type f | while read file; do gzip "$file"; done

Saya lebih suka gzip -r ./ yang melakukan hal yang sama tetapi lebih pendek.


Linux
  1. Bagaimana menemukan semua file yang jarang di Linux

  2. Bagaimana menemukan semua file yang diakhiri dengan .rb dengan Linux?

  3. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?

  1. Bagaimana cara menyingkat subdirektori?

  2. Bagaimana menemukan / mendaftar semua file unik di dua direktori?

  3. Bagaimana menemukan semua file byte nol dalam direktori

  1. Bagaimana Menemukan Semua File Yang Berhubungan Dengan Perangkat Lunak?

  2. Bagaimana menemukan semua file yang lebih besar dari ukuran 1GB di Linux?

  3. Bagaimana menemukan semua file/folder dengan izin 777 di Linux?