Tengo muchos archivos que necesito comprimir en un solo directorio. No quiero comprimir todos los archivos en el directorio, pero solo los que coinciden con una determinada consulta.
yo hice
grep abc file-* > out.txt
hacer un archivo con todas las instancias de "abc" en cada archivo. Necesito los archivos ellos mismos. ¿Cómo puedo decirle a bash que comprima solo esos archivos?

grep abc file-* > out.txtun archivo con todas las instancias de "abc" en cada archivo. Necesito los archivos ellos mismos.zip ZipFile.zip file-*, que es la forma obvia de hacerlo. Necesitaría un archivo intermedio solo si estuviera utilizando un complejofindo una concatenación de listas de archivos de diferentes búsquedas.Respuestas:
Muy simple:
Es decir, si su
out.txtarchivo contiene un nombre de archivo por línea. Agregará todos los archivos deout.txtun archivo llamadoarchive.zip.La
-@opción hacezipleer desde STDIN.Si desea omitir la creación de un
out.txtarchivo temporal , también puede usargrepla capacidad de imprimir nombres de archivo.-rhabilita la búsqueda recursiva (puede que no sea necesaria en su caso) e-limprime solo nombres de archivos:fuente
cat out.txt | while read line ; do xargs zip archive.zip $line ; donezip archive.zip $(ls common_name*)-@sintaxis de la opción funciona bien a partir del 10.16, a pesar de que la página del manual todavía incluye lenguaje sobrenot on MacOSAlternativas a la respuesta aceptada, desde aquí :
fuente