Recherche de fichiers


Recherche de fichiers sur le disque

 


 

 

La commande "find" permet de chercher des fichiers ou des répertoires dans l'arborescence du disque dur.
C'est une commande très puissante qui parcourt l'arborescence de façon récursive en évaluant l'expression fournie avec le nom des fichiers ou des répertoires.
On peut utiliser des méta-caractères pour remplacer un ou plusieurs caractères lorsque l'on ne connaît pas l'orthographe exacte ou le nom complet du fichier recherché.


?  : remplace n'importe quel caractère (1 caractère)
*  : remplace une suite de caractères (de 0 à n caractères)

Ce petit script va permettre d'utiliser cette commande avec une interface graphique simple (zenity), cela facilite grandement le travail et tolère de délaisser un peu la syntaxe de la commande ainsi que de négliger l'utilisation d'un terminal.

find recherche.png

 

#!/bin/bash

# ---------------------------------------------
# fonction chemin du répertoire
# ---------------------------------------------
R_repert() {
repert=$(zenity --file-selection --directory)    
}

# ---------------------------------------------
# fonction saisie du masque
# ---------------------------------------------
R_masque() {
masque=$(zenity --entry --title "Saisie" --text "Saisie de l'expression de recherche \n les méta-caractères * ? sont fonctionnels \n")
}

# ---------------------------------------------
# fonction recherche tout
# ---------------------------------------------
R_tout() {
find $repert -name "$masque" >~/script/resultat.txt
zenity --text-info --width=700 --height=400 --title "Résultat" --filename "$HOME/script/resultat.txt"
}

# ---------------------------------------------
# fonction recherche fichiers
# ---------------------------------------------
R_fichiers() {
find $repert -name "$masque" -type f >~/script/resultat.txt
zenity --text-info --width=700 --height=400 --title "Résultat" --filename "$HOME/script/resultat.txt"
}

# ---------------------------------------------
# fonction recherche répertoires
# ---------------------------------------------
R_directory() {
find $repert -name "$masque" -type d >~/script/resultat.txt
zenity --text-info --width=700 --height=400 --title "Résultat" --filename "$HOME/script/resultat.txt"
}


# -------------------------------
# boucle principale
# -------------------------------

while true ;
do
code=$(zenity --list --column=code --column=designation --title="Recherche de fichiers" \
    --width=500 --height=350 --hide-header --hide-column=1 \
    --text="Sélectionner une option et valider \n les méta-caractères \n * remplace une série de caractères \n ? remplace un caractère \n \n" \
    1 "Répertoire de recherche récursive       :  $repert " \
    2 "Expression de recherche                      :  $masque" \
    3 "Recherche fichiers+répertoires" \
    4 "Recherche uniquement les fichiers" \
    5 "Recherche uniquement les répertoires" \
    6 "Quitter" )
    
case $code in
    1) R_repert ;;
    2) R_masque ;;
    3) R_tout ;;
    4) R_fichiers ;;
    5) R_directory ;;
    6) break ;;
    
esac

done


16/12/2013
0 Poster un commentaire

Ces blogs de Informatique & Internet pourraient vous intéresser