Comment trouver tous les fichiers avec un texte spécifique à l'aide de Shell Linux

Comment trouver tous les fichiers avec un texte spécifique à l'aide de Shell Linux

Objectif

L'article suivant fournit quelques conseils utiles sur la façon de trouver tous les fichiers dans un répertoire spécifique ou un système de fichier entier contenant un mot ou une chaîne spécifique.

Difficulté

FACILE

Conventions

  • # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
  • $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Exemples

Trouver tous les fichiers avec une chaîne spécifique de manière non réalisée

Le premier exemple de commande recherchera une chaîne extensible Dans tous les fichiers à l'intérieur /etc/ Répertoire en excluant les sous-répertoires:

# grep -s stretch / etc / * / etc / os-release: pretty_name = "debian gnu / linux 9 (stretch)" / etc / os-release: version = "9 (stretch)" 

Le -s L'option GREP supprimera les messages d'erreur sur les fichiers inexistants ou illisibles. La sortie affiche des noms de fichiers ainsi que l'impression de la ligne réelle contenant une chaîne demandée.



Trouver tous les fichiers avec une chaîne spécifique récursivement

La commande ci-dessus a omis tous les sous-répertoires. Rechercher récursivement signifie également traverser tous les sous-répertoires. La commande Linux suivante recherchera une chaîne extensible Dans tous les fichiers à l'intérieur /etc/ Répertoire, y compris tous les sous-répertoires:

# grep -r stret / etc / * / etc / apt / sources.Liste: # Deb Cdrom: [Test de Debian GNU / Linux _StRetch_ - Instantané officiel AMD64 NETINST BINALLE-1 20170109-05: 56] / Stretch Main / etc / APT / Sources.Liste: #DEB CDROM: [Test de Debian GNU / Linux _StRetch_ - Snaphot officiel AMD64 NETINST BINALY-1 20170109-05: 56] / Stretch Main / etc / APT / Sources.Liste: deb http: // ftp.au.Debian.Org / Debian / Stretch Main / etc / APT / Sources.Liste: deb-src http: // ftp.au.Debian.Org / Debian / Stretch Main / etc / APT / Sources.Liste: Deb http: // Security.Debian.Org / Debian-Security Stretch / Mise à jour Main / etc / APT / Sources.Liste: Deb-Src http: // Security.Debian.org / debian-security stretch / mises à jour Main / etc / dictionnaires-commun / mots: backStretch / etc / dictionnaires-commun / mots: backStretch's / etc / dictionnaires-commun / mots: backStretches / etc / dictionnaires-commun / words: homestretch / etc / dictionnaires-commun / mots: homestretch's / etc / dictionnaires-commun / mots: homestretches / etc / dictionnaires-commun / mots: extérieur / etc / dictionnaires-commun / mots: tendance / etc / dictionnaires-commun / words: sorttchs / etc / dictionnaires-commun / mots: dépassement / etc / dictionnaires-commun / mots: stretch / etc / dictionnaires-commun / mots: stretch's / etc / dictionnaires-commun / word: strethed / etc / dictionnaires-commun / words: sagers etc / dictionnaires-commun / mots: civière / etc / dictionnaires-commun / mots: streethers / etc / dictionnaires-commun / mots: étirement / etc / dictionnaires-communs / mots: extensible / etc / dictionnaires-communs / mots: stretlist / etc / dictionnaires-communs / mots:étirement / etc / dictionnaires-commun / mots: extensible / etc / grub.D / 00_Header: background_image -m stretch 'Make_system_path_relative_to_its_root "$ grub_background"' / etc / os-release: pretty_name = "debian gnu / linux 9 (stretch)" / etc / os-release: version = "9 (stretch)" 


Recherchez tous les fichiers contenant un mot spécifique

Ce qui précède grep L'exemple de commande répertorie tous les fichiers contenant une chaîne extensible. Ce qui signifie les lignes avec tronçon, étiré etc. sont également montrés. Utilisez des grep -w Option pour afficher uniquement un mot spécifique:

# grep -rw stretch / etc / * / etc / apt / sources.Liste: # Deb Cdrom: [Test de Debian GNU / Linux _StRetch_ - Instantané officiel AMD64 NETINST BINALLE-1 20170109-05: 56] / Stretch Main / etc / APT / Sources.Liste: #DEB CDROM: [Test de Debian GNU / Linux _StRetch_ - Snaphot officiel AMD64 NETINST BINALY-1 20170109-05: 56] / Stretch Main / etc / APT / Sources.Liste: deb http: // ftp.au.Debian.Org / Debian / Stretch Main / etc / APT / Sources.Liste: deb-src http: // ftp.au.Debian.Org / Debian / Stretch Main / etc / APT / Sources.Liste: Deb http: // Security.Debian.Org / Debian-Security Stretch / Mise à jour Main / etc / APT / Sources.Liste: Deb-Src http: // Security.Debian.Org / Debian-Security Stretch / Mise à jour principale / etc / dictionnaires-commun / mots: Stretch / etc / dictionnaires-commun / mots: stretch / etc / grub.D / 00_Header: background_image -m stretch 'Make_system_path_relative_to_its_root "$ grub_background"' / etc / os-release: pretty_name = "debian gnu / linux 9 (stretch)" / etc / os-release: version = "9 (stretch)" 

Liste uniquement des noms de fichiers contenant un texte spécifique

Les commandes ci-dessus peuvent produire une sortie inutile. L'exemple suivant affichera uniquement tous les noms de fichiers contenant une chaîne extensible dans /etc/ Répertoire récursivement:

# grep -rl stret / etc / * / etc / apt / sources.liste / etc / dictionnaires-commun / mots / etc / grub.d / 00_header / etc / os-libération 

Effectuer une recherche insensible à la cas

Toutes les recherches sont par défaut sensibles à la casse, ce qui signifie que toute recherche d'une chaîne extensible affichera uniquement des fichiers contenant la correspondance en majuscules et minuscules exactes. En utilisant Grep -je Option La commande répertorie également toutes les lignes contenant Extensible, EXTENSIBLE, Extensible etc., Par conséquent, pour effectuer une recherche insensible à la casse.

# grep -ril stret / etc / * / etc / apt / sources.liste / etc / dictionnaires-commun / par défaut.hachage / etc / dictionnaires-commun / mots / etc / grub.d / 00_header / etc / os-libération 


Inclure ou exclure des noms de fichiers spécifiques de la recherche

En utilisant grep Commande Il est également possible d'inclure uniquement des fichiers spécifiques dans le cadre de la recherche. Par exemple, nous souhaitons seulement rechercher un texte / chaîne spécifique dans des fichiers de configuration avec extension .confli. L'exemple suivant trouvera tous les fichiers avec extension .confli dans /etc répertoire contenant une chaîne frapper:

# grep -ril bash / etc / *.conf ou # grep -ril --include = \ *.conf.confli 

De même, en utilisant --exclure Option Nous pouvons exclure les noms de fichiers spécifiques:

# grep -ril --exclude = \ *.conf. /frapper.bashrc / etc / bash_completion.d / grub / etc / cron.quotidien / apt-compat / etc / cron.quotidien / exim4-base / etc / dictionnaires-commun / par défaut.hash / etc / dictionnaires-commun / words / etc / inputrc / etc / passwd / etc / passwd- / etc / profil / etc / shells / etc / skel /.profil / etc / skel /.bashrc / etc / skel /.bash_logout 

Exclure les répertoires spécifiques de la recherche

Identique à des fichiers que Grep peut également exclure les répertoires spécifiques de la recherche. Utiliser --exclure Option pour exclure le répertoire de la recherche. L'exemple de recherche suivant trouvera tous les fichiers contenant une chaîne extensible dans /etc répertoire et exclure / etc / grub.d De la recherche:

# grep --exclude-dir = / etc / grub.D -rwl stretch / etc / * / etc / apt / sources.liste / etc / dictionnaires-commun / mots / etc / os-libération 

Afficher un numéro de ligne contenant une chaîne recherchée

En utilisant -n L'option Grep fournira également des informations concernant un numéro de ligne où la chaîne spécifique a été trouvée:

# grep -rni bash / etc / *.conf / etc / addUser.conf: 6: dshell = / bin / bash 

Trouver tous les fichiers ne contenant pas de chaîne spécifique

Le dernier exemple utilisera -V Option pour répertorier tous les fichiers ne contenant pas de mot-clé spécifique. Par exemple, la recherche suivante répertorie tous les fichiers dans /etc/ Répertoire qui ne contient pas de chaîne extensible:

# grep -rlv stretch / etc / * 

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Commandes Linux de base
  • Comment trouver une chaîne ou un texte dans un fichier sur Linux
  • Comment correctement grep pour le texte dans les scripts bash
  • Trouver tous les fichiers contenant du texte spécifique
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment imprimer l'arbre du répertoire à l'aide de Linux
  • Exemples de lignes de commande de commande de bash utile - Partie 4
  • Conseils de ligne de commande bash utiles et exemples de trucs - Partie 1