web-dev-qa-db-fra.com

Linux trouver des noms de fichiers avec une chaîne donnée

Je suis sur Ubuntu et j'aimerais trouver tous les fichiers du répertoire actuel et des sous-répertoires dont le nom contient la chaîne "John". Je sais que grep peut correspondre au contenu des fichiers, mais je ne sais pas comment l'utiliser avec des noms de fichiers. Toute aide serait appréciée.

97
JJ Beck

Utilisez la commande find ,

find . -type f -name "*John*"
179
Rich Adams

Une réponse correcte a déjà été fournie, mais pour que vous puissiez apprendre à vous aider, je pensais ajouter quelque chose d'utile d'une manière différente. si vous pouvez résumer ce que vous essayez d’obtenir dans un seul mot, il existe une fonction d’aide extrêmement puissante sur Linux.

man -k <your search term>

Ce que cela fait est de lister toutes les commandes qui ont votre terme de recherche dans la description courte. Il y a généralement de bonnes chances que vous trouviez ce que vous cherchez. ;)

Cette sortie peut parfois être un peu pénible, et je recommanderais de la réduire aux exécutables plutôt qu'à toutes les pages de manuel disponibles, comme ceci:

man -k find | egrep '\(1\)'

ou, si vous souhaitez également rechercher des commandes nécessitant des niveaux de privilège plus élevés, comme ceci:

man -k find | egrep '\([18]\)'
22
tink

La commande find prendra beaucoup de temps car elle analyse les fichiers réels dans le système de fichiers.

Le moyen le plus rapide consiste à utiliser la commande locate, qui donnera immédiatement un résultat:

locate "John"

Si la commande est introuvable, vous devez d'abord installer le package mlocate et exécuter la commande updatedb pour préparer la base de données de recherche pour la première fois.

Plus de détails ici: https://medium.com/@thucnc/the-fastest-way-toffind-files-by-filename-mlocate-locate-commands-55bf40b297ab

2
thucnguyen

utilisez ack c'est simple. il suffit de taper ack <string to be searched>

1
Annu

C'est une solution très simple qui utilise la commande tree dans le répertoire que vous souhaitez rechercher. -f montre le chemin complet du fichier et | est utilisé pour diriger la sortie de tree vers grep afin de trouver le fichier contenant la chaîne filename dans le nom.

tree -f | grep filename
1
caylus