Comment trouver un fichier dans FreeBSD

14

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?

Ian
la source
1
Bien que les réponses soient similaires, vous voudrez peut-être préciser si vous utilisez Linux ou FreeBSD. Ce n'est pas la même chose.
Greg Hewgill
titre modifié pour rendre le système d'exploitation plus spécifique
Ian
Cela devrait probablement être étiqueté FreeBSD, mais je n'ai pas la réputation de le faire.
mikl

Réponses:

18
find / -name example.filename
cletus
la source
2
Fiable, mais lent. Parfois très lent.
dmckee --- chaton ex-modérateur
3
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.

dmckee --- chaton ex-modérateur
la source
3
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.

Paul Tomblin
la source
2

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.

Jon Ericson
la source
1

locate

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.

Basil Bourque
la source
0

Si vous avez la base de données de localisation à jour, alors:

locate example.filename
Sophie Alpert
la source
0

Je fais parfois


  find . | grep example.filename

probablement extrêmement inefficace cependant.

kgrad
la source
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.
Mihai Limbăşan