Saya memiliki banyak file yang perlu saya zip ke satu direktori. Saya tidak ingin zip semua file dalam direktori, tetapi hanya yang cocok dengan permintaan tertentu.
aku melakukannya
grep abc file-* > out.txt
untuk membuat file dengan semua instance "abc" di setiap file. Saya perlu file itu sendiri. Bagaimana saya bisa memberitahu bash untuk hanya meng-zip file-file itu?
grep abc file-* > out.txt
untuk membuat file dengan semua contoh "abc" di setiap file. Saya perlu file itu sendiri.zip ZipFile.zip file-*
, yang merupakan cara yang jelas untuk melakukannya. Anda akan memerlukan file perantara hanya jika Anda menggunakan kompleksfind
atau gabungan daftar file dari pencarian yang berbeda.Jawaban:
Sangat sederhana:
Yaitu, jika
out.txt
file Anda mengandung satu nama file per baris. Ini akan menambahkan semua file dariout.txt
satu arsip yang disebutarchive.zip
.The
-@
merek pilihanzip
membaca dari STDIN.Jika Anda ingin melewatkan membuat
out.txt
file sementara , Anda dapat menggunakangrep
kemampuan untuk mencetak nama file juga.-r
memungkinkan pencarian berulang (mungkin tidak diperlukan dalam kasus Anda) dan-l
hanya mencetak nama file:sumber
cat out.txt | while read line ; do xargs zip archive.zip $line ; done
zip archive.zip $(ls common_name*)
-@
sintaks opsi berfungsi dengan baik pada 10,16, meskipun halaman manual masih mencakup bahasa tentangnot on MacOS
Alternatif untuk jawaban yang diterima, dari sini :
sumber