Pertanyaan Bagaimana saya bisa secara rekursif menemukan semua file di saat ini dan subfolder berdasarkan pencocokan wildcard?


Bagaimana saya bisa secara rekursif menemukan semua file di saat ini dan subfolder berdasarkan pencocokan wildcard?


1202
2018-05-05 23:01


asal


Jawaban:


Menggunakan menemukan untuk itu:

find . -name "foo*"

find membutuhkan titik awal, dan . (titik) menunjuk ke direktori saat ini.


1788
2018-05-05 23:03



Perpipaan menemukan ke dalam grep sering lebih nyaman; ini memberi Anda kekuatan penuh dari ekspresi reguler untuk pencocokan wildcard sewenang-wenang.

Misalnya, untuk menemukan semua file dengan string tidak sensitif huruf "foo" di nama file:

~$ find . -print | grep -i foo

164
2017-08-15 06:56



find akan menemukan semua file yang cocok dengan pola:

find . -name "*foo"

Namun, jika Anda menginginkan gambar:

tree -P "*foo"

Semoga ini membantu!


105
2018-05-05 23:15



find -L . -name "foo*"

Dalam beberapa kasus, saya membutuhkan parameter -L untuk menangani tautan direktori simbolis. Dengan tautan simbolis default diabaikan. Dalam kasus-kasus itu cukup membingungkan karena saya akan mengubah direktori ke sub-direktori dan melihat file yang cocok dengan pola tetapi menemukan tidak akan mengembalikan nama file. Menggunakan -L menyelesaikan masalah itu. Opsi tautan simbolis untuk menemukan adalah -P -L -H


16
2018-01-14 02:47



Jika Anda mendukung shell opsi globbing baru (aktifkan dengan: shopt -s globstar), Kamu dapat memakai:

echo **/*foo*

untuk menemukan file atau folder apa pun secara rekursif. Ini didukung oleh Bash 4, zsh dan shell serupa.


Secara pribadi saya punya fungsi shell ini didefinisikan:

f() { find . -name "*$1*"; }

Catatan: Baris di atas dapat ditempelkan langsung ke shell atau ditambahkan ke pengguna Anda ~/.bashrc mengajukan.

Lalu saya bisa mencari file apa saja dengan mengetik:

f some_name

Meskipun hampir sama dengan yang digunakan fd utilitas.


16
2018-01-13 16:23



find <directory_path>  -type f -name "<wildcard-match>"

Dalam wildcard-match Anda dapat memberikan string yang ingin Anda cocok misalnya * .c (untuk semua file c)


15
2018-02-05 13:32



Kamu dapat memakai:

# find . -type f  -name 'text_for_search'

Jika Anda ingin menggunakan REGX -iname

# find . -type f  -iname 'text_for_search'

6
2017-10-29 16:09



Cara default untuk mencari file rekursif, dan tersedia dalam banyak kasus adalah

find . -name "filepattern"

Ini memulai rekursif melintasi untuk nama file atau pola dari dalam direktori saat ini di mana Anda diposisikan. Dengan perintah find, Anda dapat menggunakan wildcard, dan berbagai switch, untuk melihat daftar opsi lengkap, ketik

man find

atau jika halaman manual tidak tersedia di sistem Anda

find --help

Namun, ada alat yang lebih modern dan lebih cepat kemudian menemukan, yang melintasi seluruh filesystem Anda dan mengindeks file Anda, salah satu alat umum tersebut adalah mencari atau slocate / mlocate, Anda harus memeriksa manual OS Anda tentang cara menginstalnya, dan setelah itu diinstal perlu memulai database, jika menginstal skrip tidak melakukannya untuk Anda, dapat dilakukan secara manual dengan mengetik

sudo updatedb

Dan, menggunakannya untuk mencari beberapa jenis file tertentu

locate filename

Atau, untuk mencari nama file atau derai dari dalam direktori saat ini, Anda dapat mengetik:

 pwd | xargs -n 1 -I {} locate "filepattern"

Ini akan melihat melalui database file-nya dan dengan cepat mencetak nama path yang cocok dengan pola yang telah Anda ketikkan. Untuk melihat daftar lengkap opsi lokasi, ketik: locate --help atau man locate

Selain itu Anda dapat mengkonfigurasi lokasi untuk memperbarui databasenya pada waktu yang dijadwalkan melalui cron job, jadi contoh cron yang memperbarui db pada 1AM akan terlihat seperti:

0 1 * * * updatedb

Tugas cron ini perlu dikonfigurasi oleh root, karena updatedb membutuhkan hak akses root untuk melintasi seluruh sistem file.


4
2017-08-09 06:27



untuk pencarian file
find / -xdev -name settings.xml   -> seluruh komputer
find ./ -xdev -name settings.xml  -> direktori sekarang & sub direktorinya

untuk file dengan tipe ekstensi

find . -type f -name "*.iso"

2
2018-05-31 08:47



fd

Dalam hal, find terlalu lambat, coba fd utilitas - alternatif yang sederhana dan cepat find ditulis dalam Rust.

Sintaksis:

fd PATTERN

Demo:

Homepage: https://github.com/sharkdp/fd


1
2018-06-13 15:22