1 votes

Comment rechercher plusieurs mots (dans n'importe quel ordre) dans le nom de fichier - GUI (ou terminal)

Je recherche un outil de recherche (à partir d'Ubuntu 14.04 desktop) ou une méthode/commande (Terminal) qui me permettra de rechercher dans les noms de fichiers des mots complets ou partiels, dans n'importe quel ordre, sans tenir compte de la casse.

En connaissez-vous un ?

Voici un exemple de ce que j'ai besoin de faire. Je sais que quelque part sous /home/myusername j'ai un fichier dont le nom contient les mots "personnel", "revenu", "impôt", "état". Mais je ne me rappelle pas si le nom du fichier est

  • état personnel revenu déclaration d'impôts.doc ou
  • Personnel Revenu Déclaration d'impôt - état.doc ou
  • revenu déclaration d'impôt - Etat - personnel.doc.

et je ne me rappelle pas non plus si certains des mots sont en majuscules. De plus, j'ai une tonne d'autres fichiers avec chacun des mots dedans. Donc, simplement faire une recherche sur un des mots (comme seulement "état", ou seulement "impôt") ne m'aide pas beaucoup, car cela me ramène trop de fichiers.

Idéalement, j'aimerais simplement taper [revenu état déclaration] ou [état revenu déclaration] et obtenir les fichiers avec les trois mots dans le nom du fichier, sans tenir compte de la capitalisation ou de l'ordre des mots. Un outil GUI serait préférable, mais une méthode en Terminal serait aussi acceptable.

J'ai essayé Catfish et gnome-search-tool/"Rechercher des fichiers" -- aucun des deux ne semble fonctionner pour plusieurs termes de recherche à moins que les termes soient tapés dans l'ordre où ils apparaissent dans le nom du fichier, sans aucun autre mot entre les termes de recherche.

3voto

David Foerster Points 34353

Ne pas utiliser grep! find a une syntaxe de correspondance de noms de fichiers parfaitement valable. Pour utiliser votre exemple:

find [CHEMIN...] -iname '*personal*' -iname '*income*' -iname '*tax*'

[CHEMIN...] sont zéro ou plusieurs chemins dans lesquels effectuer la recherche.

Si vous n'avez pas désactivé votre base de données de noms de fichiers mlocate, il peut être plus rapide de l'utiliser pour une recherche plus rapide. Vous pouvez même lui demander de rechercher plusieurs termes de recherche conjonctifs avec l'option -A/--all:

locate -i -A -b income personal tax

1voto

heemayl Points 85741

Vous pouvez utiliser grep autant de fois que vous le souhaitez pour rechercher des mots dans les noms de fichiers. Par exemple, pour trouver les noms de fichiers contenant les mots "revenu", "impôt", "personnel" et "état", vous pouvez faire ce qui suit :

ls -R /home/myusername/ | grep -i "revenu"  | grep -i "impôt" | grep -i "personnel" | grep -i "état"

Ici, l'option -i garantira la prise en compte de la casse.

REMARQUE :

find serait mieux adapté à ce type de scénario. Consultez cette réponse et cette réponse pour plus de détails.

0voto

rusoaie Points 71

En général, ce que je fais c'est dans mon répertoire personnel find . | grep 'SEARCHTERM1\|SEARCHTERM2'

0voto

Vous pouvez facilement le faire avec un outil de recherche floue appelé fzf. Installez-le à partir de https://github.com/junegunn/fzf et vous vous demanderez comment vous avez pu vous en passer.

0voto

Gaston Points 1

Si, en utilisant caja ou nautilus, vous cliquez sur la grande icône de recherche, tapez les mots dont vous parlez et cliquez sur la petite icône de recherche, cela effectuera une recherche de nom DE type "ET". L'erreur de xxx-seach-tool est d'empêcher plusieurs lignes d'options "Le nom contient". Dites-leur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X