Saya menyusun skrip untuk melakukan beberapa operasi file untuk saya. Saya menggunakan operator kartu liar *
untuk menerapkan fungsi ke semua jenis file, tetapi ada satu hal yang tidak saya mengerti. Saya dapat unzip
semua file dalam folder seperti ini
unzip "*".zip
Namun, untuk menghapus semua file zip sesudahnya, saya perlu melakukan
rm *.zip
Artinya, tidak ingin tanda kutip. Unzip, di sisi lain, tidak berfungsi jika saya hanya memberikan * (memberi saya peringatan bahwa "file tidak cocok").
Mengapa ini berbeda? Bagi saya, ini sepertinya operasi yang sama persis. Atau apakah saya salah menggunakan wild card?
Pengenalan wild card di Unix tidak benar-benar membahas ini, dan saya tidak dapat menemukan apa pun di rm
atau zip
dokumen.
Saya menggunakan terminal di Mac (Yosemite).
Jawaban yang Diterima:
Anda telah menjelaskan situasinya dengan sangat baik. Bagian terakhir dari teka-teki ini adalah unzip
dapat menangani wildcard itu sendiri:
http://www.info-zip.org/mans/unzip.html
ARGUMEN
file[.zip]
…
Ekspresi wildcard mirip dengan yang didukung di shell Unix yang umum digunakan (sh, ksh, csh) dan mungkin berisi:
* cocok dengan urutan 0 karakter atau lebih
Dengan mengutip * wildcard, Anda mencegah shell Anda memperluasnya, sehingga unzip
melihat wildcard dan berurusan dengan mengembangkannya sesuai dengan logikanya sendiri.
rm
, sebaliknya, tidak mendukung karakter pengganti sendiri , jadi mencoba mengutip karakter pengganti akan menginstruksikan rm
untuk mencari tanda bintang literal dalam nama file sebagai gantinya.
Alasan unzip *.zip
tidak berfungsi adalah unzip
Sintaksnya tidak mengizinkan banyak file zip; jika ada beberapa parameter, parameter ke-2 dan selanjutnya akan menjadi file dalam arsip:
unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) …] [-x xfile(s) …] [-d exdir]