GNU/Linux >> Belajar Linux >  >> Linux

gzip semua file tanpa menghapusnya

find . -type f | \
while read -r x
do
  gzip -c "$x" > "$x.gz"
done

-c mendorong hasilnya ke stdout dan menyimpan yang asli saja. Kerugiannya adalah, Anda harus mencari file sendiri. Untuk penjelajahan yang lebih canggih, Anda dapat menggunakan find(1) , bagaimanapun, seperti di atas:. pencarian mulai dari direktori saat ini, dan -type f mengembalikan nama setiap file biasa.


find . -type f -not \( -name '*.gz' -or -name '*[~#]' \) -exec sh -c 'gzip -c "{}" > "{}.gz"' \;

Anda dapat dengan mudah mengubahnya untuk memasukkan apa yang ingin Anda kompres ( -name '*.txt -or -name '*.html dll.) daripada seperti sekarang, mengecualikan beberapa file (sudah dikompresi, cadangan, dan file sementara).

Menangani spasi dalam nama file juga baik-baik saja.

Ubah gzip ke echo gzip untuk pengujian. Atau lewati bagian -exec secara bersamaan.

Edit: Oh, saya lupa menyebutkan bahwa ini tidak memeriksa apakah <target>.gz sudah ada. Ini mungkin atau mungkin bukan masalah.

Edit2: Oke, ini dia dengan sesuatu yang memeriksa file yang ada. Jika itu mungkin diinginkan. Maafkan kesendiriannya.

while read file; do if [ ! -f "$file.gz" ]; then echo "Compressing $file"; gzip -c "$file" > "$file.gz"; else echo "Not overwriting $file.gz";  fi  done < <(find . -type f -not \( -name '*.gz' -or -name '*[~#]' \))

find saya -foo mungkin tidak seperti itu, sangat mungkin untuk melewati langsung di find.


gzip -k opsi

gzip 1.6 (Juni 2013) menambahkan -k, --keep opsi, jadi sekarang Anda dapat:

gzip -kr .

dan itu tidak akan menghapus file asli Anda.

Ditemukan di:https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file


Linux
  1. Dapatkan Daftar Semua File Dengan Mask Di Terminal?

  2. Bagaimana menemukan semua file yang jarang di Linux

  3. Bagaimana menemukan semua perangkat serial (ttyS, ttyUSB, ..) di Linux tanpa membukanya?

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

  2. Temukan file dan tar (dengan spasi)

  3. Cara gzip semua file di semua sub-direktori di bash

  1. Cara gzip semua atau file tertentu di Linux

  2. Temukan banyak file dan ganti namanya di Linux

  3. Bagaimana menemukan semua file byte nol dalam direktori