[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Find en bash



El 8 de junio de 2009 13:39, Carlos Martínez<troans@gmail.com> escribió:
> Sigue sin funcionarme. Os copio exactamente todo lo que he probado por si se
> os ocurre alguna otra alternativa
>
> 1) find /home/ \( -iname "*.mp3" -o -iname "*.avi" \)    => esta funciona
>
> 2) EXTENSIONES="-iname \"*.mp3\" -o -iname \"*.avi\""
>    find /home/ \( $EXTENSIONES \)                           => no funciona

A ver, a esto no le llames así: find /home/ \( $EXTENSIONES \) hazlo
así: find /home/ `EXTENSIONES` (con las comillas de la tecla que está
a la derecha de la P) (o lo mismo pero con el símbolo del dolar
también, es lo mismo: find /home/ `$EXTENSIONES` , pero ponle las
comillas esas). Así te tiene que devolver los mimo.

Todo lo demás está mal, las posibles soluciones que también te
devolverían los mismo casos pero no son correctas son:
find /home/ "( $EXTENSIONES )" pero te saldría al final de todos los
.mp3 devueltos lo siguiente: find: `( -iname "*.mp3" -o -iname "*.avi"
)': Non hay tal fichero o directorio (por que evalúa eso como nombre
también)
o: find /home "( `EXTENSIONES` )" pero te devolvía todos los
resultados y: find: `(  )': Non hay tal fichero o directorio
(evaluando eso otra vez como parte del iname)

Aunque yo lo haría como dije en el anterior mail que me acabo de dar
cuenta que no lo envié a la lista que lo envié a Ángel al darle a
responder (perdón Ángel) (jod** con Gmail!!), lo pego aquí ahora:

==== Copy paste del mail anterior ====

Yo haría algo así:
Si con esto (find /path/to/find \( -iname "*.mp3*" -o -iname "*.mpg"
\)) te encuentra algo, lo mismo te tendría que encontrar con esto:

EXTENSIONES='\( -iname "*.mp3*" -o -iname "*.mpg" \)'
find /path/to/find `EXTENSIONES` (no con $EXTENSIONES)

==== Fin copy paste de mail anterior ====

Lo siguiente que pusiste (opciones 3 y 4, ni las barajes por que te
vas a acabar liando, aunque funcionarían de las misma manera si
llamaras al comando con las comillas que te digo, de la misma manera
(CONCLUSIÓN: el error está en como llamas después de establecer la
variable a find, forma correcta esta: find /home/ `EXTENSIONES` o
esta: find /home/ `$EXTENSIONES`, todas las demás asignaciones de las
variables e valdrían).

Espero que no te líe todo esto, ponle atención que es fácil liarse con
la parrafada que te acabo de soltar.

Saludos.

>
> 3) EXTENSIONES="-iname \"*.mp3\" -o -iname \"*.avi\""
>    find /home/ \( "$EXTENSIONES" \)                           => no funciona
>
> 4) EXTENSIONES="\"*.mp3\" -o \"*.avi\""
>    find /home/ -iname \( $EXTENSIONES \)                           => no
> funciona
>
> Y quería eviar el bucle porque creo que es más elegante y es que sólo es
> cuestión de sustituir una cadena por una variable.
>
> ¿Estoy haciendo algo mal?
>
> Muchas gracias
>
>
> El 7 de junio de 2009 23:41, Angel Claudio Alvarez <dus.angel@gmail.com>
> escribió:
>>
>> El dom, 07-06-2009 a las 10:23 +0200, Carlos Martínez Fernández
>> escribió:
>> > Hola a tod@s,
>> >
>> >
>> > Tengo un script para calcular la ocupación de contenido multimedia por
>> > cada usuario. El problema lo tengo al utilizar el comando find para
>> > buscar los ficheros .mp3, .mpeg, .mpg, .avi, etc. etc.
>> >
>> > Si ejecuto el comando tal como:
>> >
>> > find /path/to/find \( -iname "*.mp3*" -o -iname "*.mpg" \)
>> >
>> > ahora bien, si creo una variable con las extensiones tal como:
>> >
>> > EXTENSIONES="-iname \"*.mp3*\" -o -iname \"*.mpg\""
>> > find /path/to/find \( $EXTENSIONES \)
>> >
>> > ahora el comando find no me encuentra nada.
>> >
>> > ¿Alguna sugerencia?
>> >
>> Perdon me olvide de decirte que tenes que sacar el parametro iname de la
>> variable
>>
>> >
>> > Muchas gracias
>> >
>> >
>>
>>
>> --
>> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
>> with a subject of "unsubscribe". Trouble? Contact
>> listmaster@lists.debian.org
>>
>
>



-- 
aabilio - http://linfox.es
http://expulsionporagresion.linfox.es
GPG id C7B08605 Abilio Almeida Eiroa (aabilio)
SIP: aabilio@ekiga.net


Reply to: