Re: findtar
Alvaro Herrera <[EMAIL PROTECTED]> wrote: > Juan Carlos Rojas escribió: > > > find -exec para commandos mover cp rm funciona muy bien RTFM! find --exec esta pensado para ejecutar el para *cada uno* de los archivos hallados, independientemente. | xargs lo que hace es tomar las y pasarselas en grupos (se espera que +/- grandes, ojala todo lo grandes que se pueda para minimizar el numero de nuevos procesos creados) a para que las procese *de a un grupo* a la vez. No hay (mucho) control sobre los grupos (puede ser uno solo con todos, puros grupos de a uno, ...) > Cuando quieres borrar archivos, mejor que "-exec rm" es "find -delete" Porque el "-exec " lanza el comando para c/u de los archivos, mientras "| xargs rm" lo lanza para un grupo (ojala mas bien grandecito), y "--delete" implementa eso internamente (no hay que invocar comandos externos; esto es una extension porque es uno de los usos tipicos el eliminar archivos an~ejos). -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de InformaticaFono: +56 32 2654431 Universidad Tecnica Federico Santa Maria +56 32 2654239 Casilla 110-V, Valparaiso, Chile 234 Fax: +56 32 2797513
RE: findtar
-Mensaje original- > De: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] En nombre de Aldrin Martoq > On Tue, 2008-12-02 at 09:45 -0300, Juan Carlos Rojas wrote: > No debes usar xargs: te puedes topar con el largo maximo del buffer de > la linea de comandos. Usa find -exec, por ejemplo: > > find -name '*.pdf' -exec tar A foo.tar {} \; On Wed, 2008-12-03 at 11:10 -0300, Juan Carlos Rojas wrote: > La opción -exec trata una a una los resultados de find por eso cuando ejecuto > find dir-origen -name *.pdf -exec tar -zcvf resultado.tgz {} \; > Finalmente genera el archivo resultado.tgz pero que solo contiene el utlimo > archivo encontrado por find. En realidad debió ser "tar r", no "tar c" (ni "tar A"). La idea es agregar un archivo a un respaldo tar _ya existente_, lo cual eventualmente podria ser útil. Un ejemplo concreto: amartoq$ tar cf 9/foo.tar mib.pl amartoq$ find -name '*.txt' -exec tar rf 9/foo.tar {} \; amartoq$ tar tvf 9/foo.tar -rwxr-xr-x amartoq/amartoq mib.pl -rw-r--r-- amartoq/amartoq ./mibs-2.txt -rw-r--r-- amartoq/amartoq ./20081016/mibs-2.txt -rw-r--r-- amartoq/amartoq ./20081016/orig/mibs-2.txt -rw-r--r-- amartoq/amartoq ./20081016/orig/monitor.oids.txt -rw-r--r-- amartoq/amartoq ./20081016/p02/mibs-2.txt etc... El problema es que el archivo debe existir antes... -- Aldrin Martoq <[EMAIL PROTECTED]> http://aldrinvideopodcast.podshow.com/ signature.asc Description: This is a digitally signed message part
Re: findtar
Carlos (casep) Sepulveda escribió: > Holas: > OJO, \ no es lo mismo que + (por eso le decia que utilizar +) > > $ find . -name '*pdf' -exec tar -zcvf resultado.tgz {} + > ./websphere-integration-guide.pdf Esto funciona sólo si el número de archivos no es demasiado grande. El manual dice que la cantidad de invocaciones al programa será menor que sin el +, pero no necesariamente será una sola. > $ tar tzf resultado.tgz > ./websphere-integration-guide.pdf > ./IntellinX User Guide.pdf > ./IntellinX Implementation Guidelines_v1_5.pdf > ./Analisis_ de_ Galletas_informe_tecnico.pdf > ./ds_host_dlp.pdf Tu ejemplo funciona porque hay pocos archivos. -- Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4 "El número de instalaciones de UNIX se ha elevado a 10, y se espera que este número aumente" (UPM, 1972)
Re: findtar
On 2008-12-03, Juan Carlos Rojas <[EMAIL PROTECTED]> wrote: > La opción -exec trata una a una los resultados de find por eso cuando ejecuto > find dir-origen -name *.pdf -exec tar -zcvf resultado.tgz {} \; > Finalmente genera el archivo resultado.tgz pero que solo contiene el utlimo > archivo encontrado por find. > Holas: OJO, \ no es lo mismo que + (por eso le decia que utilizar +) $ find . -name '*pdf' -exec tar -zcvf resultado.tgz {} + ./websphere-integration-guide.pdf ./IntellinX User Guide.pdf ./IntellinX Implementation Guidelines_v1_5.pdf ./Analisis_ de_ Galletas_informe_tecnico.pdf ./ds_host_dlp.pdf $ tar tzf resultado.tgz ./websphere-integration-guide.pdf ./IntellinX User Guide.pdf ./IntellinX Implementation Guidelines_v1_5.pdf ./Analisis_ de_ Galletas_informe_tecnico.pdf ./ds_host_dlp.pdf Saludos -- "...la palabra Dios no es más que la expresión y producto de la debilidad humana, y la Biblia una colección de leyendas honorables pero todavía primitivas que son de todos modos bastante infantiles." A. Einstein GTALK/MSN:carlos.sepulveda[at]gmail.com http://carlos.sepulveda.googlepages.com/
Re: findtar
Juan Carlos Rojas escribió: > find -exec para commandos mover cp rm funciona muy bien Cuando quieres borrar archivos, mejor que "-exec rm" es "find -delete" -- Alvaro Herrera Developer, http://www.PostgreSQL.org/ "The problem with the future is that it keeps turning into the present" (Hobbes)
RE: findtar
La opción -exec trata una a una los resultados de find por eso cuando ejecuto find dir-origen -name *.pdf -exec tar -zcvf resultado.tgz {} \; Finalmente genera el archivo resultado.tgz pero que solo contiene el utlimo archivo encontrado por find. Lo siguiente funciona muy bien incluso con archivos cuyos nombres tienene espacios. find -name '*.pdf' | tar --files-from /dev/stdin -cvf foo.tar find -exec para commandos mover cp rm funciona muy bien pero para un comando que debe actuar sobre todo el resultado de la busqueda de una ves se recomienda xargs pero aun asi no me empaqueta los archivos cuyos nombre tienene un espacio en blanco. ATTE JCArlos -Mensaje original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Aldrin Martoq Enviado el: martes, 02 de diciembre de 2008 11:10 Para: Discusion de Linux en Castellano Asunto: Re: findtar On Tue, 2008-12-02 at 09:45 -0300, Juan Carlos Rojas wrote: > Hola listeros generalmente utilizo la potencia de find en conjunto con tar > sin problemas pero justo ahora me encontre con que existen algunos archivos > cuyos nombres tienen estan separados por espacios en blanco. > Al realizar la combinación find |xargs tar No me empaqueta los archivos > cuyos nombres estan separados por espacios en blanco . me arroja > tar: 2008: No se puede stat: No existe el fichero o el directorio > tar: -: No se puede stat: No existe el fichero o el directorio > Lo que sucede es que separa el nombre del archivo en tantas partes como > palabras contenga su nombre No debes usar xargs: te puedes topar con el largo maximo del buffer de la linea de comandos. Usa find -exec, por ejemplo: find -name '*.pdf' -exec tar A foo.tar {} \; Ahora, estuve leyendo el manual y existe la opcion -T en tar. Algo como esto: find -name '*.pdf' | tar --files-from /dev/stdin -cvf foo.tar -- Aldrin Martoq <[EMAIL PROTECTED]> http://aldrinvideopodcast.podshow.com/
Re: findtar
Andres Pereira <[EMAIL PROTECTED]> wrote: > On Tue, Dec 2, 2008 at 7:45 AM, Juan Carlos Rojas <[EMAIL PROTECTED]> wrote: > > Hola listeros generalmente utilizo la potencia de find en conjunto con tar > > sin problemas pero justo >ahora me encontre con que existen algunos > > archivos cuyos nombres tienen estan separados por >espacios en blanco. > > Al realizar la combinación find |xargs tar No me empaqueta los > > archivos cuyos nombres estan >separados por espacios en blanco . me arroja > > > Alguna idea de cómo realizar esto algun flags que deba agregar . > > Usando -print0 y -0 en find y xargs respectivamente, aunque ya te > dijeron la limitacion del xargs. No es sano usar xargs(1) + tar(1) o afines, ya que xargs llena un balde de argumentos y llama al comando con esos, etc. Si hay muchos argumentos (archivos a procesar), el tarball resultante contendra solo la ultima remesa si no tienes mucho cuidado... No, no es "limitacion", es por disen~o (de xargs y de tar). -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de InformaticaFono: +56 32 2654431 Universidad Tecnica Federico Santa Maria +56 32 2654239 Casilla 110-V, Valparaiso, Chile 234 Fax: +56 32 2797513
Re: findtar
On Tue, Dec 2, 2008 at 7:45 AM, Juan Carlos Rojas <[EMAIL PROTECTED]> wrote: > Hola listeros generalmente utilizo la potencia de find en conjunto con tar > sin problemas pero justo >ahora me encontre con que existen algunos archivos > cuyos nombres tienen estan separados por >espacios en blanco. > Al realizar la combinación find |xargs tar No me empaqueta los archivos > cuyos nombres estan >separados por espacios en blanco . me arroja > Alguna idea de cómo realizar esto algun flags que deba agregar . Usando -print0 y -0 en find y xargs respectivamente, aunque ya te dijeron la limitacion del xargs. -- Andrés Pereira Unix Russian roulette: [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "You live"
Re: findtar
On 2008-12-02, Juan Carlos Rojas <[EMAIL PROTECTED]> wrote: > Hola listeros generalmente utilizo la potencia de find en conjunto con tar > sin problemas pero justo ahora me encontre con que existen algunos archivos > cuyos nombres tienen estan separados por espacios en blanco. > Al realizar la combinación find |xargs tar No me empaqueta los archivos > cuyos nombres estan separados por espacios en blanco . me arroja > Holas: Tal vez con -exec te sirva Por ejemplo: # find -name Intalio* ./Intalio SOAInt_ INP.pdf # find -name Intalio* -exec tar czvf intalio.tgz {} + ./Intalio SOAInt_ INP.pdf # tar tzvf intalio.tgz -rw-rw-r-- casep/casep 1348359 2008-10-30 15:06 ./Intalio SOAInt_ INP.pdf Saludos -- "...la palabra Dios no es más que la expresión y producto de la debilidad humana, y la Biblia una colección de leyendas honorables pero todavía primitivas que son de todos modos bastante infantiles." A. Einstein GTALK/MSN:carlos.sepulveda[at]gmail.com http://carlos.sepulveda.googlepages.com/
Re: findtar
On Tue, 2008-12-02 at 09:45 -0300, Juan Carlos Rojas wrote: > Hola listeros generalmente utilizo la potencia de find en conjunto con tar > sin problemas pero justo ahora me encontre con que existen algunos archivos > cuyos nombres tienen estan separados por espacios en blanco. > Al realizar la combinación find |xargs tar No me empaqueta los archivos > cuyos nombres estan separados por espacios en blanco . me arroja > tar: 2008: No se puede stat: No existe el fichero o el directorio > tar: -: No se puede stat: No existe el fichero o el directorio > Lo que sucede es que separa el nombre del archivo en tantas partes como > palabras contenga su nombre No debes usar xargs: te puedes topar con el largo maximo del buffer de la linea de comandos. Usa find -exec, por ejemplo: find -name '*.pdf' -exec tar A foo.tar {} \; Ahora, estuve leyendo el manual y existe la opcion -T en tar. Algo como esto: find -name '*.pdf' | tar --files-from /dev/stdin -cvf foo.tar -- Aldrin Martoq <[EMAIL PROTECTED]> http://aldrinvideopodcast.podshow.com/ signature.asc Description: This is a digitally signed message part
findtar
Hola listeros generalmente utilizo la potencia de find en conjunto con tar sin problemas pero justo ahora me encontre con que existen algunos archivos cuyos nombres tienen estan separados por espacios en blanco. Al realizar la combinación find |xargs tar No me empaqueta los archivos cuyos nombres estan separados por espacios en blanco . me arroja tar: 2008: No se puede stat: No existe el fichero o el directorio tar: -: No se puede stat: No existe el fichero o el directorio tar: Init.: No se puede stat: No existe el fichero o el directorio tar: Into: No se puede stat: No existe el fichero o el directorio tar: R.: No se puede stat: No existe el fichero o el directorio tar: Fund.: No se puede stat: No existe el fichero o el directorio tar: Comp.: No se puede stat: No existe el fichero o el directorio tar: -: No se puede stat: No existe el fichero o el directorio tar: Carta: No se puede stat: No existe el fichero o el directorio tar: Gantt: No se puede stat: No existe el fichero o el directorio tar: -: No se puede stat: No existe el fichero o el directorio tar: Verónica: No se puede stat: No existe el fichero o el directorio tar: Mujica: No se puede stat: No existe el fichero o el directorio tar: Escudero.pdf: No se puede stat: No existe el fichero o el directorio Lo que sucede es que separa el nombre del archivo en tantas partes como palabras contenga su nombre Alguna idea de cómo realizar esto algun flags que deba agregar . ATTE JCArlos