1 votes

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

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

En connaissez-vous un ?

Voici un exemple de ce que je dois 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 n'arrive pas à me souvenir si le nom du fichier est

  • state personal income tax return.doc o
  • personal Income Tax return - state.doc o
  • income tax return - State - personal.doc .

et je n'arrive pas non plus à me souvenir si certains mots sont en majuscules. De plus, j'ai des millions d'autres fichiers avec chacun de ces mots. Par conséquent, une recherche simple sur un seul mot (par exemple, uniquement "État" ou uniquement "taxe") ne m'aide pas beaucoup, car elle renvoie à trop de fichiers.

Idéalement, j'aimerais pouvoir taper [income state return] ou [state income return] et obtenir les fichiers contenant les trois mots dans le nom de fichier, indépendamment de la majuscule ou de l'ordre des mots. Une interface graphique serait préférable, mais une méthode par terminal serait également acceptable.

J'ai essayé Catfish et gnome-search-tool/"Search for Files" -- aucun d'entre eux ne semble fonctionner pour des termes de recherche multiples à moins que les termes soient tapés dans l'ordre de leur apparition dans le nom du fichier, sans aucun autre mot entre les termes de recherche.

3voto

David Foerster Points 34353

N'utilisez pas grep ¡! find possède une syntaxe de correspondance des noms de fichiers parfaitement adaptée. Pour reprendre votre exemple :

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

[PATH...] sont zéro ou plusieurs chemins sous lesquels chercher.

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

locate -i -A -b income personal tax

1voto

heemayl Points 85741

Vous pouvez utiliser grep autant de fois pour autant de mots que vous voulez rechercher dans les noms de fichiers. Par exemple, pour trouver les noms de fichiers contenant les mots "income", "tax", "personal" et "state", vous pouvez procéder comme suit :

ls -R /home/myusername/ | grep -i "income"  | grep -i "tax" | grep -i "personal" | grep -i "state"

Ici, le -i permettra d'assurer l'insensibilité à la casse.

HINWEIS:

find serait mieux adapté à ce genre de scénario. Consultez cette réponse y cette réponse pour les détails.

0voto

rusoaie Points 71

Ce que je fais généralement, 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, tout 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 fera une recherche AND des noms de fichiers de ces mots. L'erreur de xxx-seach-tool est d'empêcher de multiples lignes d'option "Name contains". 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