Re: findtar

2008-12-04 Por tema Horst H. von Brand
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

2008-12-03 Por tema Aldrin Martoq
-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

2008-12-03 Por tema Alvaro Herrera
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

2008-12-03 Por tema Carlos (casep) Sepulveda
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

2008-12-03 Por tema Alvaro Herrera
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

2008-12-03 Por tema Juan Carlos Rojas
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

2008-12-02 Por tema Horst H. von Brand
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

2008-12-02 Por tema Andres Pereira
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

2008-12-02 Por tema Carlos (casep) Sepulveda
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

2008-12-02 Por tema Aldrin Martoq
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

2008-12-02 Por tema Juan Carlos Rojas
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