Script shell : retrouvez un nom de fichier (odt ou ods) depuis un mot clé

Script shell : retrouvez un nom de fichier (odt ou ods) depuis un mot clé.

Vous recherchez un fichier dont vous ne vous souvenez pas du nom mais vous savez qu’il contient certains mots, retrouver ce fichier avec l’un des mots « clés ».

On peut aussi rechercher dans les fichiers « doc » ou « xls », mais une raison que je ne m’explique pas les résultats sont moins convaincants.

Lors de mes tests sur les fichiers « doc », il m’affichait des résultats de fichiers contenant le mot clé mais en excluait d’autres qui contenait ce même mot clé !? Peut-être que cela est dû au fait qu’ils n’ont pas été enregistrés avec les mêmes versions Word ? Bref, je n’ai pas de réponse pour ces extensions propriétaires.

Voici donc le script, rien de révolutionnaire, je n’invente rien, que des trucs que j’essaie d’adapter :

#!/bin/bash
# Recherche une chaîne de caractères dans tous les fichiers odt ou ods
# de façon récursive depuis le lieu de recherche.

# Syntaxe :
# nomduscript.sh "chaîne à rechercher" (sans guillemets).
# Répondre à la première question par odt ou ods
# Fonctionne partiellement avec doc ou xls ????
# Pour limiter la rechercher mettre le chemin absolu...

# exemple : "/home/user/Documents" (sans les guillemets).
# Pour une recherche depuis l'endroit où se trouve le script
# il suffit de taper un point "." (sans les guillemets).

echo "Dans quelle type de fichier penses-tu chercher ?"
echo -n "Saisir le type de fichier (odt ou ods) : "
read exten
echo -n "Saisir le chemin de départ : "
read chemin
find $chemin -type f -name "*.$exten" | while read i
do
[ "$1" ] || { echo "Bah ! Tu as oublié de mettre le mot recherché..." ; exit 1 ; }
unzip -ca "$i" 2>/dev/null | grep -iq "$*"
        if [ $? -eq 0 ]
        then
                echo "j'ai trouvé ton mot dans $i" | nl
        fi
done
echo "J'ai terminé mon travail !"
Une fois que vous avez sauvegardé ce script sous le nom de votre choix. Pour l’exemple nous allons le nommer search_mot.sh
Donc une fois votre fichier search_mot.sh créer il faut le rendre exécutable :
chmod +x search_mot.sh
Comment l’utiliser ? Il suffit de lancer le script avec le mot clé recherché (en fait, le mot clé est une chaîne de caractères). Exemple « script mot-clé » :
./search_mot.sh taxodiaceae

Le script va demander l’extension de fichier (odt ou ods) sachant que vous pouvez mettre doc ou xls mais avec un résultat moins probant… et je n’ai pas d’explication… Mais testez…

Puis il sera demandé le chemin de départ. Il s’agit du chemin absolu.

Donc soit la racine « / », soit votre home « /home/user/ »… Ou un autre chemin pou serrer au plus prêt la recherche. Mais il doit être absolu et partir de la racine /

Bon assez parlé et mon exemple avec les résultats en lançant le script plus le mot clé (ici taxodiaceae) :

./search_mot.sh taxodiaceae
Dans quelle type de fichier penses-tu chercher ?
Saisir le type de fichier (odt ou ods) : odt
Saisir le chemin de départ : /home/sima78/
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/fiche/chryptomeria.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/cle_identif/chryptomeria_japonica .odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/noms-familles/taxodiaceae.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/in-situ/chryptomeria_japonica.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/coniferes.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Pedago/parcours/anim-0018.odt
J'ai terminé mon travail !
Voilà, bien entendu, vous pouvez perfectionner le script, le simplifier, je suis preneur…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *