pengembangan-web-mp-pd.com

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

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

1398
john

Gunakan temukan untuk itu:

find . -name "foo*"

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

2081
tux21b

Menemukan pipa ke grep seringkali lebih nyaman; itu memberi Anda kekuatan penuh ekspresi reguler untuk pencocokan wildcard sewenang-wenang.

Sebagai contoh, untuk menemukan semua file dengan string case foo "tidak sensitif" dalam nama file:

~$ find . -print | grep -i foo
182
Paul Whipp

find akan menemukan semua file yang cocok dengan suatu pola:

find . -name "*foo"

Namun, jika Anda menginginkan gambar:

tree -P "*foo"

Semoga ini membantu!

118
IslandCow

Jika Shell Anda mendukung opsi globbing baru (dapat diaktifkan oleh: shopt -s globstar), Anda dapat menggunakan:

echo **/*foo*

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


Secara pribadi saya mendefinisikan fungsi Shell ini:

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

Catatan: Baris di atas dapat disisipkan langsung ke Shell atau ditambahkan ke file ~/.bashrc pengguna Anda.

Lalu saya bisa mencari file apa pun dengan mengetik:

f some_name

Atau Anda dapat menggunakan utilitas fd dengan sintaks sederhana, mis. fd pattern.

21
kenorb
find -L . -name "foo*"

Dalam beberapa kasus, saya membutuhkan parameter -L untuk menangani tautan direktori simbolik. Secara default, tautan simbolik 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 memecahkan masalah itu. Opsi tautan simbolik untuk find adalah -P -L -H

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

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

20
P_Jain

fd

Jika find terlalu lambat, coba utilitas fd - sebuah alternatif sederhana dan cepat untuk find yang ditulis dalam Rust.

Sintaksis:

fd PATTERN

Demo:

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

12
kenorb

Kamu bisa memakai:

# find . -type f  -name 'text_for_search'

Jika Anda ingin menggunakan REGEX, gunakan -iname

# find . -type f  -iname 'text_for_search'
8
user8848899

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

find . -name "filepattern"

Itu mulai traversing rekursif untuk nama file atau pola dari dalam direktori saat ini di mana Anda diposisikan. Dengan perintah find, Anda dapat menggunakan wildcard, dan berbagai sakelar, untuk melihat daftar opsi, 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 sistem file 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 begitu diinstal itu perlu memulai database, jika skrip instal tidak melakukannya untuk Anda, itu bisa dilakukan secara manual dengan mengetik

Sudo updatedb

Dan, untuk 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 dan dengan cepat mencetak nama jalur yang cocok dengan pola yang telah Anda ketik . Untuk melihat daftar lengkap opsi temukan, ketik: locate --help atau man locate

Selain itu Anda dapat mengonfigurasi loc untuk memperbarui basis data pada waktu yang dijadwalkan melalui pekerjaan cron, jadi cron sampel yang memperbarui db pada pukul 1AM akan terlihat seperti:

0 1 * * * updatedb

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

4

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

untuk file dengan tipe ekstensi

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

Perintah di bawah ini membantu untuk mencari file apa pun 

1) Terlepas dari kasus
2) Hasil Tidak termasuk folder tanpa izin
3) Pencarian dari root atau dari jalur yang Anda suka. Ubah/dengan jalur yang Anda inginkan. 

Sintaks: 
find -iname '' 2> & 1 | grep -v "Izin ditolak"

Contoh

temukan/-inama 'C * .xml' 2> & 1 | grep -v "Izin ditolak"

find / -iname '*C*.xml'   2>&1 | grep -v "Permission denied"
1
MukeshKoshyM

Perintah berikut akan mencantumkan semua file yang memiliki nama persis "pola" (misalnya) di folder saat ini dan subnya. 

find ./ -name "pattern"

1
anshul

Ini akan mencari semua file terkait di direktori saat ini dan sub direktori, menghitung jumlah baris mereka secara terpisah serta sepenuhnya:

find . -name "*.wanted" | xargs wc -l
0
Jay Yang

Jika Anda ingin mencari file khusus dengan wildcard, Anda dapat menggunakan kode berikut:

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

Misalkan, Anda ingin mencari setiap file .conf dari sini: 

. berarti pencarian dimulai dari sini (tempat saat ini)
-type berarti jenis item pencarian yang di sini adalah file (f).
-name berarti Anda ingin mencari file dengan * .conf names.

0
Reza Harasani