Je suis sous Ubuntu et j'aimerais trouver tous les fichiers du répertoire courant et des sous-répertoires dont le nom contient la chaîne "John". Je sais que cela grep
peut correspondre au contenu des fichiers, mais je ne sais pas comment l'utiliser avec les noms de fichiers. Toute aide serait appréciée.
107
Réponses:
Utilisez la commande find ,
la source
#!/bin/bash if [ -z $1 ]; then echo "Error: Specify pattern for search"; else /usr/bin/find . -type f -name "*$1*"; fi
vous permettrait de l'exécuterF search-string
comme un raccourci parfait[ -z "$1" ]
serait un peu mieux.if [ -z ]
. Je pensais que ce serait une erreur de syntaxe, mais cela fonctionne. Je peux désormais simplifier une partie de mon code.Une réponse correcte a déjà été fournie, mais pour que vous appreniez à vous aider vous-même, j'ai pensé ajouter quelque chose d'utile d'une manière différente; si vous pouvez résumer ce que vous essayez d'accomplir en un mot, il existe une puissante fonctionnalité d'aide sur Linux.
Cela permet de répertorier toutes les commandes contenant votre terme de recherche dans la brève description. Il y a généralement de bonnes chances que vous trouviez ce que vous recherchez. ;)
Cette sortie peut parfois être un peu écrasante, et je recommanderais de la limiter aux exécutables, plutôt qu'à toutes les pages de manuel disponibles, comme ceci:
ou, si vous souhaitez également rechercher des commandes qui nécessitent des niveaux de privilèges plus élevés, comme ceci:
la source
La
find
commande prendra beaucoup de temps car elle analyse les fichiers réels dans le système de fichiers.Le moyen le plus rapide est d'utiliser la
locate
commande, qui donnera immédiatement le résultat:Si la commande n'est pas trouvée, vous devez d'abord installer le
mlocate
package et exécuter laupdatedb
commande 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-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab
la source
utilisez ack c'est simple. tapez simplement
ack <string to be searched>
la source
C'est une solution très simple en utilisant la
tree
commande dans le répertoire que vous souhaitez rechercher.-f
affiche le chemin complet du fichier et|
est utilisé pour diriger la sortie de l'arborescence versgrep
pour trouver le fichier contenant la chaînefilename
dans le nom.la source