GNU/Linux >> Belajar Linux >  >> Linux

Cocokkan semua file di bawah semua direktori bersarang dengan shell globbing

Khususnya tentang git (gitignore, gitattributes, dan perintah yang mengambil nama file):jika polanya tidak mengandung garis miring, * wildcard akan cocok dengan deep. Jika memang mengandung garis miring, git akan memanggil fnmatch dengan FNM_PATHNAME bendera, dan wildcard sederhana tidak akan cocok dengan garis miring. ** untuk mencocokkan deep tidak didukung. Mungkin pencocokan mendalam semacam ini dapat didukung lebih luas dengan FNM_STARSTAR baru flag, dan implementasi di glibc, gnulib, dan tempat lain.


Jika Anda ingin menindaklanjuti semua file yang dikembalikan oleh find, daripada hanya mencantumkannya, Anda dapat menyalurkannya ke xargs:

find <directory> -type f | xargs ls

Tapi ini hanya untuk perintah yang tidak memiliki tanda rekursif.


Di Bash 4, dengan shopt -s globstar , dan zsh Anda dapat menggunakan **/* yang akan menyertakan semuanya kecuali file tersembunyi. Anda dapat melakukan shopt -s dotglob di Bash 4 atau setopt dotglob di zsh untuk memasukkan file tersembunyi.

Di ksh, set -o globstar memungkinkannya. Menurut saya tidak ada cara untuk memasukkan file dot secara implisit, tapi menurut saya **/{.[^.],}* berfungsi.


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

  2. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  3. Cara Cepat Membuat File Di Dalam Direktori Bersarang Di Linux

  1. Huruf Kecil Semua Direktori Di Bawah Direktori?

  2. Membuat dan Menghapus File dan Direktori Di Linux

  3. Buat file dengan file sumber di direktori berbeda

  1. Bagaimana menemukan semua file yang diakhiri dengan .rb dengan Linux?

  2. Buat daftar semua file gambar grafik dengan find?

  3. Temukan direktori dengan semua file di dalamnya lebih tua dari X?