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 unzipsemua 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 rmatau zipdokumen.
Saya menggunakan terminal pada Mac (Yosemite).
unzipberlaku glob untuk isi arsip; Anda tidak bisa mendapatkannya dari bash dengan wildcard. (Anda perlu `` `untuk f in unzip -l archive.zip; do ... done`)
unzipmenerima 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. tartidak memiliki mode operasi seperti itu.
unzipbisa melakukan ini tanpafor f in *.zip;do...donelingkaran shell normal . UI baris perintah yang non-unix-like aneh.