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.
Setel variabel lingkungan dalam skrip/akses Shell di Aplikasi Tomcat
Bagaimana cara memahami konten setelah pola?