GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo filtrar recursivamente el nombre de los archivos que quiero con comodines?

Usa grep de --include opción:

grep -ir "string" --include="*.php" .

Si tienes una versión de grep que carece del --include opción, puede usar lo siguiente. Ambos fueron probados en una estructura de directorios como esta:

$ tree
.
├── a
├── b
│   └── foo2.php
├── c
│   └── d
│       └── e
│           └── f
│               └── g
│                   └── h
│                       └── foo.php
├── foo1.php
└── foo.php

Donde todos los .php los archivos contienen la cadena string .

  1. Utilice find

    $ find . -name '*php' -exec grep -H string {} +
    ./b/foo2.php:string
    ./foo1.php:string
    ./c/d/e/f/g/h/foo.php:string
    

    Explicación

    Esto encontrará todos los .php archivos y luego ejecute grep -H string en cada uno de ellos. Con find -exec opción, {} se reemplaza por cada uno de los archivos encontrados. El -H le dice a grep para imprimir el nombre del archivo, así como la línea coincidente.

  2. Suponiendo que tiene una versión lo suficientemente nueva de bash , usa globstar :

    $ shopt -s globstar
    $ grep -H string  **/*php
    b/foo2.php:string
    c/d/e/f/g/h/foo.php:string
    foo1.php:string
    

    Explicación

    Como se explica en el manual de bash:

    globstar

    Si se establece, el patrón '**' utilizado en un contexto de expansión de nombre de archivo coincidirá con todos los archivos y cero o más directorios y subdirectorios. Si el patrón va seguido de un '/', solo coinciden los directorios y subdirectorios.

    Entonces, al ejecutar shopt -s globstar está activando la función y el globstar de Bash opción que hace **/*php expandir a todos .php archivos en el directorio actual (** coincide con 0 o más directorios, por lo que **/*php coincide con ./foo.php también) que luego son grepped para string .


Linux
  1. ¿Cómo mover archivos y ver el progreso (por ejemplo, con una barra de progreso)?

  2. ¿Cómo imprimir el nombre de los archivos que faltan en una carpeta?

  3. ¿Cómo puedo ejecutar código PHP desde la línea de comandos?

  4. Encuentra todos los archivos con un nombre que contenga una cadena

  5. ¿Cómo puedo anteponer una cadena al comienzo de cada línea en un archivo?

Cómo encontrar archivos en Linux con el comando Buscar

Cómo encontrar una cadena o palabra específica en archivos y directorios

Cómo cambiar recursivamente los permisos de archivos en Linux

Cómo encontrar recursivamente y enumerar los archivos por fecha en Linux

Cómo copiar archivos con una extensión de archivo específica recursivamente

Cómo encontrar archivos con el comando fd en Linux