J'utilise localiser tout le temps pour trouver des fichiers dont je connais le nom, localiser est très rapide et j'adore ça. Pour les fichiers récemment créés trouver c'est génial. Normalement, avec les fichiers récemment créés, je sais où ils ont été créés. Je n'ai donc pas à chercher dans tout mon système de fichiers.
Lorsque j'ai oublié l'emplacement d'un répertoire, ni trouver ni localiser ne semble idéal.
Locate génère toujours trop d'informations, car chaque fichier d'un répertoire est également une correspondance pour une localisation. Par exemple, si je cherchais un répertoire nommé log quelque part sur mon système de fichiers, localiser le journal renverrait des tonnes et des tonnes de résultats. Si je fais la même chose avec find, find/nom-log type-type d find prend quelques minutes à s'exécuter et génère toutes sortes d'erreurs d'autorisations chaque fois qu'il rencontre un dossier qu'il ne peut pas lire.
Y a-t-il un meilleur moyen?
Réponse: Je reste donc avec 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
}
Un moyen (j'imagine qu'il pourrait exister un meilleur moyen) consiste à utiliser grep pour ne renvoyer que les chemins se terminant par le nom de votre dossier:
locate foldername | grep /foldername$
Vous pouvez utiliser l'option --regex
(-r
) de locate
:
locate -r '/log$'
As-tu essayé:
locate /home/insertusernamehere/*/filename
?
ou
locate file | grep -i '^/home/.*/examplesubdirectory'
?
ou toute variante de celle-ci?
C'est ici
locatedir () {
locate "$*" | while read line
do
if [ -d "$line" ] ; then echo $line ; fi
done
}
locatedir $*