web-dev-qa-db-fra.com

Comment trouver des fichiers plus rapidement que trouver ou localiser?

J'ai utilisé la commande find pour trouver des fichiers sur mon disque dur de 1 To. ça prend très longtemps. puis j’ai utilisé une localisation qui s’est révélée plus rapide avec une mise à jour régulière avec updatedb. Mais la limitation de la localisation est que je ne parviens pas à trouver des fichiers d’une certaine taille ou modifiés/créés. pouvez-vous me suggérer des idées sur la façon de trouver des fichiers plus rapidement ou dans ce cas, comment diriger la sortie de la commande de localisation de manière à ce que toutes les autres informations telles que la taille, l'heure, etc. puissent être affichées ou redirigées vers un fichier.

7
Chaitanya

Je n'ai pas vu de réponse qui se rapproche des souhaits de Chaitanya. Si vous souhaitez effectuer une recherche sur le nom de fichier, une combinaison de rechercher, rechercher, ls et grep peut suffire. Mais je pense que Chaitanya veut chercher par exemple "tous les fichiers créés avant 2011". Cela peut parfaitement se faire avec find, mais j'imagine que cela prendra beaucoup de temps de chercher jusqu'à 1 To (dépend davantage de la quantité de fichiers, pas nécessairement de la taille totale). Pour accélérer cela, je pense que l'indexation est inévitable. Le problème de la localisation (indexation avec updatedb) est qu’il n’indexe pas le moment de la création.

Chaitanya a donc besoin de quelque chose qui indexe les attributs de fichiers nécessaires (nom de fichier, taille du fichier, date de création, etc.?). Et plus tard, quelque chose qui peut rechercher sur ces attributs. Autant que je sache, il n’existe pas de solution prête à l’emploi pour cela sur Ubuntu.

Un commentaire important de Chaitanya: "Maintenant, le problème, c’est que je suis en train de concevoir un navigateur Web basé sur php ...". Parce que votre problème semble assez spécifique, vous voulez peut-être vous débrouiller seul. Quelques suggestions:

  • Indexez les fichiers dans une base de données (avec cronjob) et utilisez SQL pour effectuer une recherche.

  • Utilisez Lucene pour indexer et rechercher ( Zend Lucene pour PHP)

2
Rachid

Utilisez gnome-search-tool

Il offre

  • Contenu du fichier
  • Date de modification
  • Taille
  • Fichier vide
  • Propriétaire/groupe
  • Exclusion de modèle de nom
  • Correspondance d'expression régulière de nom
  • Fichiers cachés et de sauvegarde
0
totti

Utilisez "find option Parameter". Voir "l'homme trouve" plus de détails. Utilisez localiser pour trouver un document rapidement et facilement, par exemple. "localiser * .jpg"

0
user49695

Vous pouvez essayer Tracker . Il a un démon qui attend les modifications de fichiers et met à jour une base de données avec toutes les métadonnées possibles, ainsi qu'un client que vous pouvez utiliser pour rechercher des fichiers. Notez qu’il n’indexe que le répertoire de l’utilisateur, pas tout le disque dur.

La récupération principale est qu’elle a besoin de temps processeur pour être indexée. Ne l’utilisez donc que si votre ordinateur dispose de suffisamment de puissance.

Vous devrez installer le serveur et le client, ils sont nommés tracker et tracker-gui. Si vous recherchez un traqueur dans le centre logiciel, ce sont les deux premières correspondances. Si vous préférez les installer à partir de la ligne de commande:

Sudo apt-get install tracker tracker-gui
0
Javier Rivera

Réponse au commentaire:

ls -la "$(locate -d external.db "Duel of Fates (Darth ")"

produit:

-rw-rw-r-- 1 groupe d'utilisateurs 4075134 2012-03-30 22:37/home/utilisateur/Musique/Star Wars: Épisode 1 - Duel du destin (Thème de Darth Maul) .mp3

Merci @Oli dans le chat AskUbuntu pour m'avoir prévenu de "quelque chose" pour échapper à Shell

0
RobotHumans

Le problème avec Locate est qu’il ne collecte occasionnellement que des informations sur les fichiers selon un programme cron régulier. Si vous avez besoin de mlocate pour mettre à jour ses informations, lancez simplement ceci

$ Sudo /etc/cron.daily/mlocate

Si vous avez besoin d’une solution davantage "en temps réel" et constamment mise à jour, nous vous suggérons d’utiliser une solution spécialement conçue pour surveiller votre système de fichiers, telle que tracker-gui, comme l’a déclaré Javier Rivera.

Pour rediriger la sortie de locate vers un fichier, utilisez simplement une flèche > au lieu du caractère pipe |. (Une flèche écrasera un fichier de sortie s'il existe déjà. Deux flèches s'ajouteront à un fichier de sortie s'il existe déjà.)

$ locate filename > output.txt  # Overwrite
$ locate filename >> output.txt # Append
0
Sepero