error: operador inesperado

test `find /mnt/backups/mysql/information_schema-20120521-*.sql -type f -mmin -1500`

Estoy tratando de verificar la antigüedad de un archivo, pero obtengo errores de "operador unario esperado" y "operador inesperado" según bash / sh utilizado en el script.

¿Cómo puedo evitarlo?

Si no uso el comodín "*", entonces todo funciona bien, pero tengo que usarlo.

preguntado el 21 de mayo de 12 a las 11:05

Parece que find devuelve más de un nombre de archivo. -

¿Qué estás intentando lograr? test espera un único argumento de cadena si no especifica un operador. Por otro lado, find por sí mismo es bastante capaz de informar si encontró algún archivo, si eso es lo que está tratando de averiguar. -

parece que te has perdido un punto oscuro sobre el uso find. El primer argumento debe ser una ruta, no una especificación de archivo. algo que termina con *.sql es una especificación de archivo. En sus comentarios a continuación, sigue refiriéndose a las variables. Quieres decir ...*.sql OR y env var, como $VAR. Si te refieres a $VAR, no puede estar entre comillas simples, ya que las comillas s impiden la expansión variable. O no hay comillas o la solución preferida es usar comillas dobles, es decir "$VAR". Buena suerte. -

2 Respuestas

lo intentaré

find /mnt/backups/mysql/ -name "information_schema-20120521-*.sql" -type f -mmin -1500

Y quizás agregue --max depth si solo desea archivos justo debajo de /mnt/backups/mysql/

contestado el 21 de mayo de 12 a las 12:05

Si ! prueba find '$DIR/$db-$date-*.sql' -type f -mmin -1500 Funciona bien solo pero con variables no funciona. find: `$DIR/$db-$date-*.sql': No existe tal archivo o directorio - user553076

Funciona bien solo pero con variables no funciona. #!/bin/bash fecha=date +%Y%m%d RESULTADO=0 ARCHIVO=/tmp/mysqlstatus DBS="$(mysql -Bse 'mostrar bases de datos')" DIR=/mnt/backups/mysql for db en $DBS do if ! prueba find '$DIR/$db-$date-*.sql' -type f -mmin -1500 entonces RESULTADO=$(($RESULTADO + 1)) fi hecho echo $RESULTADO > $ARCHIVO - user553076

Utilice {}: $DIR/${db}-${fecha}-*.sql' - Eran Ben-Natan

Trate de citar el argumento, tal cual comodines para find parecen causar problemas con bash:

test `find '/mnt/backups/mysql/information_schema-20120521-*.sql' -type f -mmin -1500`

contestado el 21 de mayo de 12 a las 12:05

funciona bien solo pero nuevamente con variable no funciona. - user553076

Intenta usar comillas dobles: find "/mnt/...$VAR...sql"... - Alejandro Pavlov

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.