Jawaban:
Atau...
find $directory_name -name \*.sql
Sebagai contoh
find / -name \*.sql
Atau
find ~ \*.sql
(di mana ~ menyamakan dengan / home / your_username /), atau ...
find /usr/local/share/ \*.sql
Dan seterusnya.
Jalankan ini di baris perintah:
cd / && find | grep '\.sql$'
Ubah '/' ke direktori yang ingin Anda cari.
The findPerintah mampu menyelesaikan tugas tanpa grep (menggunakan opsi tambahan), tapi saya menemukan penggunaan di atas lebih nyaman.
Secara berurutan, perintah di atas:
cd /)find)| grep '\.sql$')findtelah memfilter kemampuan
Saya tahu bahwa ini adalah posting lama, tetapi saya cukup baru dalam hal ini dan saya telah menemukan cara mudah untuk menemukan semua file dari ekstensi tertentu dalam direktori dan subdirektori anak-anaknya. Yah Anda pertama kali menavigasi ke parent Directoryitu find . -name '*.sql'dan itu akan menemukan Anda semua file dengan ekstensi .sql di direktori dan subdirektori.
Dalam kasus saya, saya ingin menghapus semua file .xml di direktori dan subdirektori, jadi yang saya lakukan lebih banyak adalah saya menambahkan hapus seperti di sinifind . -name '*.xml' | xargs rm
Semoga ini bisa membantu seseorang :)
findmengerti -deleteperintahnya. Tidak perlu terlibat rm. Atau Anda dapat menggunakan -execperintah untuk menjalankannya secara langsung tanpa jalan memutar melalui pipa dan xargs.
locate -br \\.sql$ | egrep '^/folder/path/'
Jika tidak diinstal, maka instal sebelumnya dengan:
sudo apt install mlocate
mlocate.dbinstance terkini yang tidak diatur di luar kotak di Ubuntu (saya percaya). Juga, mengapa tidak sederhana saja locate '/folder/path/*.sql'?
locatememiliki beberapa pengaturan berbeda dari regex yang digunakan dalamegrep
locatecocok dengan ekspresi glob seperti /folder/path/*.sql, bukan ekspresi reguler.
man locatesaya -r, --regexp REGEXP - Search for a basic regexp REGEXPjadi saya menganggap itu adalah regex. Pokoknya saya mencoba "ekspresi global" Anda tetapi tidak berhasil, maaf
--regextidak ditentukan, PATTERNs dapat berisi karakter globbing." ( Sumber )