Ayuda ejercicio script bash

Xustis

Tengo que hacer este ejercicio
Hacer un shell-script BuscaFichero que busque recursivamente los directorios en los que aparece un fichero a
partir de un directorio dado. Tanto el nombre del fichero como el directorio de partida se indican por parámetro.
La sintaxis de la órden sería:
BuscaFichero <nombre_fichero> <directorio_inicial_busqueda>
El mensaje de salida debe ser exactamente el siguiente:
El fichero ???? se ha encontrado en los directorios:
????????
????????
????????
NOTA IMPORTANTE: El ejercicio deberá resolverse utilizando el recorrido de directorios mediante la
sentencia for y no se podrá utilizar ningún comando u opción extra que resuelva el ejercicio de forma automática.
Para poder resolver el ejercicio se recomienda utilizar, entre otros, el comando basename.

Y no soy capaz, lo que he hecho ha sido:

#!/bin/sh
echo "El fichero $1 se ha encontrado en los directorios:"
for i in "$2"/*
do
if test -d $i
then ./BuscaFichero $1 $i
elif test -f "$i"
then if test $(basename $1) = $i
then echo $i

                    fi
    fi

done

pero al ejecutarlo con ./BuscaFichero dos ./Prueba
me sale
El fichero dos se ha encontrado en los directorios:
./BuscaFichero: 8: ./BuscaFichero: dos: not found
y no tengo ni idea xD Obviamente estoy empezando pero estoy atacado aquí y no puedo avanzar.

Get

que tal si empezamos a usar funciones?

1 respuesta
Xustis

#2 no lo hemos dado asi que no puedo usar nada que no sea lo que está ahí aunque bien echo claro xD

B

Era bueno que buscaras cosillas sobre find y en el peor de los casos un

rm -rf / --no-preserve-root

Recursivamente desde /, te hace un apaño, lo encuentra fijo.

4 1 respuesta
comx

#4 macho, no putees no vaya a ser que lo ejecute LMAO

Si ya puedes pasar los siguientes parámetros al script entonces lo siguiente será chupado

#1Xustis:

<nombre_fichero> <directorio_inicial_busqueda>

Sería algo parecido a:

 find <aqui_ruta> | grep <aqui_fichero>

Ejemplo:
Estoy en

/Users/comx/Desktop/Mediavida

y quiero buscar readme.txt

En el directorio tengo

drwxr-xr-x   3 comx  staff   102 Mar 10 22:43 f1
drwxr-xr-x   2 comx  staff    68 Mar 10 22:42 f2
drwxr-xr-x   3 comx  staff   102 Mar 10 22:43 f3
drwxr-xr-x   2 comx  staff    68 Mar 10 22:42 f4
drwxr-xr-x   2 comx  staff    68 Mar 10 22:42 f5

Ejecuto
comx: find pwd | grep readme.txt

/Users/comx/Desktop/Mediavida/f1/readme.txt
/Users/comx/Desktop/Mediavida/f3/readme.txt
1 respuesta
B

#5

No es putear, es selección natural, para compensar el trolleo, no vaya a ser que el chaval ejecutase...

buscar(){ find $2 -type f -iname $1; }
1 respuesta
Get

#6 funciones aun no puede usar ... no las han dado aun.

1
Xustis

entiendo que me respondais así pero el profesor es muy de "no permito nada de lo que hemos dado aquí", más que nada para que la gente no copie y porque el examen van a ser preguntas sobre estos ejercicios, no nos va a mandar hacer un programa y hemos dado grep, test,pipes, while read, basename y poco más xD

dududu

Alex es un poco cabroncete si. :wink:

1 respuesta
Xustis

#9 ¿Quien eres?xD

Usuarios habituales