GNU/Linux >> Belajar Linux >  >> Linux

Bola Rekursif?

Saya ingin menulis sesuatu seperti ini:

$ ls **.py

untuk mendapatkan semua nama file .py, berjalanlah hierarki direktori secara rekursif.

Bahkan jika ada file .py untuk ditemukan, shell (bash) memberikan output ini:

ls: cannot access **.py: No such file or directory

Adakah cara untuk melakukan apa yang saya inginkan?

EDIT: Saya ingin menyatakan bahwa saya tidak tertarik dengan kasus spesifik ls , tetapi pertanyaannya adalah tentang sintaks glob.

Jawaban yang Diterima:

Untuk melakukan gumpalan rekursif di bash, Anda memerlukan globstar fitur dari bash versi 4 atau lebih tinggi.

Dari halaman manual bash:

globstar
    If set, the pattern ** used in a pathname expansion context will
    match all files and zero or more directories and subdirectories.
    If the pattern is followed by a /, only directories and
    subdirectories match.

Untuk pola contoh Anda:

shopt -s globstar
ls -d -- **/*.py

Linux
  1. Grep Rekursif Vs Temukan / -type F -exec Grep {}; Mana yang Lebih Efisien/Lebih Cepat?

  2. Umount Rekursif Setelah Mount Rbind?

  3. Ekspansi Variabel Shell Dan Pengaruh Glob Dan Split Di atasnya?

  1. Uji Pencarian Dan Ganti Sed Rekursif Sebelum Menjalankan?

  2. Membangun Parser Descent Rekursif:Panduan Definitif

  3. Abaikan huruf besar-kecil di glob() di Linux

  1. Menjalankan perintah terminal loop di Jupyter

  2. grep rekursif:mengecualikan direktori tertentu

  3. Bagaimana saya bisa melakukan chmod rekursif hanya pada direktori?