GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa memfilter secara rekursif nama file yang saya inginkan dengan wildcard?

Gunakan grep --include opsi:

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

Jika Anda memiliki versi grep yang tidak memiliki --include opsi, Anda dapat menggunakan yang berikut ini. Keduanya diuji pada struktur direktori seperti ini:

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

Di mana semua .php file berisi string string .

  1. Gunakan find

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

    Penjelasan

    Ini akan menemukan semua .php file lalu jalankan grep -H string pada masing-masing. Dengan find -exec opsi, {} digantikan oleh setiap file yang ditemukan. -H memberi tahu grep untuk mencetak nama file serta baris yang cocok.

  2. Dengan asumsi Anda memiliki versi bash yang cukup baru , gunakan globstar :

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

    Penjelasan

    Seperti yang dijelaskan dalam manual bash:

    globstar

    Jika disetel, pola '**' yang digunakan dalam konteks perluasan nama file akan cocok dengan semua file dan nol atau lebih direktori dan subdirektori. Jika pola diikuti oleh '/', hanya direktori dan subdirektori yang cocok.

    Jadi, dengan menjalankan shopt -s globstar Anda mengaktifkan fitur dan globstar Bash opsi yang membuat **/*php luaskan ke semua .php file di direktori saat ini (** cocok dengan 0 direktori atau lebih, jadi **/*php cocok dengan ./foo.php juga) yang kemudian diambil untuk string .


Linux
  1. Bagaimana Cara Memindahkan File Dan Melihat Kemajuannya (mis. Dengan Bilah Kemajuan)?

  2. Bagaimana Cara Mencetak Nama File Yang Hilang Dalam Folder?

  3. Bagaimana cara saya grep secara rekursif?

  1. Bagaimana saya bisa mengeksekusi kode PHP dari baris perintah?

  2. Temukan semua file dengan nama yang mengandung string

  3. Bagaimana saya bisa menambahkan string ke awal setiap baris dalam sebuah file?

  1. Dasar-dasar Linux:Cara Mengunduh File di Shell Dengan Wget

  2. Bagaimana Saya Dapat Mengubah Nama Banyak File Dalam Sebuah Folder?

  3. Bagaimana saya bisa menginstal Anaconda terbaru dengan wget