J'essaie de localiser toutes les copies de example.filenamesur mon serveur FreeBSD. Quelle est la meilleure façon / la plus simple / la plus efficace de le faire?
autres indicateurs 'find' qui peuvent être appropriés, selon le besoin: -type f (ne dérange pas avec les répertoires ou les liens symboliques avec le même nom) -ls (pour afficher des détails tels que la taille du fichier, par exemple si les fichiers ont le même nom mais contenu différent)
Zac Thompson
19
locate filename
Bien plus que find, si vous utilisez le service de localisation, et il trouve que les fichiers qui existaient au moment de la updatedbdernière exécution (usualy la nuit befor sous le contrôle d'une tâche cron).
Vous pouvez courir updatedbà la main, mais cela est encore plus lent que le findcletus ne le suggère et nécessite une racine. Je mets parfois à jour la base de données à la main après avoir installé un tas de nouvelles choses.
La localisation ne fonctionne que si vous avez le service en cours d'exécution pour construire la base de données de localisation (oubliez son nom). Il peut également souffrir de retard (dans la mesure où le fichier que vous recherchez peut avoir été ajouté depuis la dernière génération).
cletus le
Retouches et commentaires croisés sur le fil. Cool. Vous avez bien sûr raison sur les deux points.
dmckee --- chaton ex-modérateur
4
Si vous vous trouvez en train de faire find /ou sur un grand arbre plus d'une fois par semaine, alors exécuter le locateservice en vaut la peine, car locate(1)c'est tellement plus rapide.
Drew Stephens
@cletus Running sudo periodic weeklymet à jour la locatebase de données. Exécutez-le après toute installation ou téléchargement pouvant contenir les fichiers que vous désirez.
Basil Bourque
2
Si vous avez installé Locate (aka slocate), alors
locate example.filename
Locate exécute une tâche cron tous les soirs qui réindexe tous les fichiers de votre machine. Ce n'est pas toujours à jour pour cette raison.
Parfois, vous souhaitez rechercher des fichiers à un niveau de répertoire spécifique. Dans ce cas, il peut être pratique d'utiliser des caractères génériques shell:
ls /data/*/example.filename
Évidemment, cela ne fonctionne que si vous avez une structure de répertoire rigide.
Comme d'autres l'ont mentionné, locatec'est le moyen rapide de trouver un fichier. Cette commande utilise un index précompilé des noms de fichiers et de dossiers. Cette base de données de noms est recherchée, plutôt que de parcourir votre système de fichiers.
locate example.filename
Pour être insensible à la casse, ajoutez -i.
locate -i eXAmPle.FileName
Mettre à jour la locatebase de données
La base de données utilisée par locatedoit être à jour. Après avoir effectué une installation ou un téléchargement pouvant contenir le fichier souhaité, vous devez mettre à jour la locatebase de données.
La locatebase de données sera éventuellement mise à jour automatiquement par votre système FreeBSD. Un ensemble hebdomadaire de tâches comprend cette tâche. Ces tâches sont répertoriées dans le /etc/periodic/weekly/310.locatescript.
Le moyen le plus simple et le plus sûr de forcer la mise à jour précoce de la locatebase de données est de forcer le travail hebdomadaire à effectuer maintenant.
sudo periodic weekly
Ou, vous pouvez même forcer toutes les tâches régulières à effectuer. Vous voudrez peut-être le faire immédiatement après avoir configuré un nouveau système FreeBSD.
sudo periodic daily weekly monthly
Si vous utilisez d'autres moyens pour mettre à jour la locatebase de données, vous pouvez recevoir un message indiquant qu'il n'est pas sûr, révélant les noms de tous les fichiers de votre système à n'importe quel utilisateur du système FreeBSD. L'utilisation de l' periodicitinéraire évite ce problème.
Ouaip, cela correspond à tout puis jette tout sauf le nom que vous cherchiez. Au lieu de cela, vous pouvez simplement faire 'find -name "example.filename"' qui fait exactement la même chose sans tout d'abord imprimer et sans exécuter un processus grep supplémentaire.
Réponses:
la source
Bien plus que
find
, si vous utilisez le service de localisation, et il trouve que les fichiers qui existaient au moment de laupdatedb
dernière exécution (usualy la nuit befor sous le contrôle d'une tâche cron).Vous pouvez courir
updatedb
à la main, mais cela est encore plus lent que lefind
cletus ne le suggère et nécessite une racine. Je mets parfois à jour la base de données à la main après avoir installé un tas de nouvelles choses.la source
find /
ou sur un grand arbre plus d'une fois par semaine, alors exécuter lelocate
service en vaut la peine, carlocate(1)
c'est tellement plus rapide.sudo periodic weekly
met à jour lalocate
base de données. Exécutez-le après toute installation ou téléchargement pouvant contenir les fichiers que vous désirez.Si vous avez installé Locate (aka slocate), alors
Locate exécute une tâche cron tous les soirs qui réindexe tous les fichiers de votre machine. Ce n'est pas toujours à jour pour cette raison.
la source
Parfois, vous souhaitez rechercher des fichiers à un niveau de répertoire spécifique. Dans ce cas, il peut être pratique d'utiliser des caractères génériques shell:
Évidemment, cela ne fonctionne que si vous avez une structure de répertoire rigide.
la source
locate
Comme d'autres l'ont mentionné,
locate
c'est le moyen rapide de trouver un fichier. Cette commande utilise un index précompilé des noms de fichiers et de dossiers. Cette base de données de noms est recherchée, plutôt que de parcourir votre système de fichiers.Pour être insensible à la casse, ajoutez
-i
.Mettre à jour la
locate
base de donnéesLa base de données utilisée par
locate
doit être à jour. Après avoir effectué une installation ou un téléchargement pouvant contenir le fichier souhaité, vous devez mettre à jour lalocate
base de données.La
locate
base de données sera éventuellement mise à jour automatiquement par votre système FreeBSD. Un ensemble hebdomadaire de tâches comprend cette tâche. Ces tâches sont répertoriées dans le/etc/periodic/weekly/310.locate
script.Le moyen le plus simple et le plus sûr de forcer la mise à jour précoce de la
locate
base de données est de forcer le travail hebdomadaire à effectuer maintenant.Ou, vous pouvez même forcer toutes les tâches régulières à effectuer. Vous voudrez peut-être le faire immédiatement après avoir configuré un nouveau système FreeBSD.
Si vous utilisez d'autres moyens pour mettre à jour la
locate
base de données, vous pouvez recevoir un message indiquant qu'il n'est pas sûr, révélant les noms de tous les fichiers de votre système à n'importe quel utilisateur du système FreeBSD. L'utilisation de l'periodic
itinéraire évite ce problème.la source
Si vous avez la base de données de localisation à jour, alors:
la source
Je fais parfois
probablement extrêmement inefficace cependant.
la source