Script: find y patrones

Imagen de madtyn
0 puntos

Hola!

Estoy aprendiendo a hacer scripts en bash y estaba haciendo uno para organizar unos miles de ficheros que tengo en disco.

Mi problema ha surgido cuando he llegado al punto de usar el comando find para encontrar los ficheros que contienen un determinado patron en el nombre pasado por parametro.

Si uso:

find ./ -type f -iname *cadena*

fuera del script funciona correctamente, pero dentro del script, casca cuando se encuentra un directorio y suelta el error:

" find: Las rutas deben preceder la expresión "

Lo que supongo que viene de que expande *cadena* y encuentra tanto un directorio como un fichero con la cadena. Así que probé a entrecomillarlo y usar:

find ./ -type f -iname '*cadena*'

lo cual no da el error, pero tampoco detecta el fichero deseado. La misma sentencia exacta ejecutada fuera del script en linea de comandos funciona.

Mi duda es saber porque ocurre esto y qué es lo que no estoy entendiendo del manejo de patrones, del entrecomillado o del find.

Estoy mirando por un par de webs, un libro en pdf, unos ejemplos, pero nada me deja claro una linea a seguir y mis experimentos no dan sus frutos aquí.

Gracias anticipadas.

Imagen de razaAztk
+1
+1
-1

Las comillas simples (' ') no "traducen" los metacaracteres. Para ello debes usar comillas dobles (" ").

Saludos!

+1
+1
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}