J'utilise Locate tout le temps pour trouver des fichiers dont je connais le nom, Locate est très rapide et j'adore ça. Pour les fichiers récemment créés, la recherche est excellente, normalement avec les fichiers récemment créés, je sais où ils ont été créés, donc je n'ai pas à rechercher tout mon système de fichiers.
Quand j'ai oublié l'emplacement d'un répertoire, ni trouver ni localiser ne semble idéal.
Locate recrache toujours beaucoup trop d'informations car chaque fichier d'un répertoire correspond également à Locate. Par exemple, si je cherchais un répertoire nommé log quelque part sur mon système de fichiers, le journal de localisation retournerait des tonnes et des tonnes de résultats. Si je fais la même chose avec find, find / -name log -type d find prend quelques minutes à s'exécuter et crache toutes sortes d'erreurs d'autorisation chaque fois qu'il rencontre un dossier qu'il ne peut pas lire.
Y a-t-il une meilleure façon?
Réponse: Je m'en tiens donc à grep jusqu'à ce que je trouve autre chose:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
a sa propre capacité de regex intégrée:-r
ou--regex
... pour une gamme complète d'options voir: info localiser'
dans ce cas:locate -r /log$
c'est suffisant.As-tu essayé:
locate /home/insertusernamehere/*/filename
?ou
locate file | grep -i '^/home/.*/examplesubdirectory'
?ou toute variation de ce genre?
la source
grep
n'est pas nécessaire, et comme le montre la première option suggérée, les regexps ne le sont pas non plus.C'est ici
la source