Saya mengumpulkan skrip untuk melakukan beberapa operasi file untuk saya. Saya menggunakan operator kartu liar *
untuk menerapkan fungsi ke semua file jenis, tetapi ada satu hal yang saya tidak dapatkan. Saya bisa unzip
semua file dalam folder seperti ini
unzip "*".zip
Namun, untuk menghapus semua file zip sesudahnya, perlu saya lakukan
rm *.zip
Artinya, tidak ingin tanda kutip. Unzip, di sisi lain, tidak berfungsi jika saya hanya memberikan * (beri saya peringatan bahwa "file tidak cocok").
Mengapa ini berbeda? Bagi saya, ini sepertinya operasi yang sama persis. Atau saya salah menggunakan wild card?
Pengantar kartu liar di Unix tidak benar-benar masuk ke ini, dan saya tidak dapat menemukan apa pun di rm
atau zip
dokumen.
Saya menggunakan terminal pada Mac (Yosemite).
unzip
berlaku glob untuk isi arsip; Anda tidak bisa mendapatkannya dari bash dengan wildcard. (Anda perlu `` `untuk f in unzip -l archive.zip
; do ... done`)
unzip
menerima gumpalan yang cocok dengan dalam satu file zip. Tetapi ini berbeda; Saya sebenarnya mencoba unzip '*.zip'
dalam direktori dengan banyak file zip, dan itu mengekstrak semua file dari semua zip. Seperti yang saya katakan, sangat aneh. tar
tidak memiliki mode operasi seperti itu.
unzip
bisa melakukan ini tanpafor f in *.zip;do...done
lingkaran shell normal . UI baris perintah yang non-unix-like aneh.