Jawaban:
Gunakan find untuk itu:
find . -name "foo*"
find
membutuhkan titik awal, dan .
(titik) menunjuk ke direktori saat ini.
find . foo*
, maka foo*
akan diperluas DAN LALU berlalu untuk menemukan.
" "
sangat diperlukan untuk pencarian rekursif.
find . -name "foo*" 2>/dev/null
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
find
juga memiliki tanda -iname
,, -regex
dan -iregex
tanda untuk wildcard, regex, dan pencocokan regex case-insensitive, sehingga pemipaan ke grep
tidak perlu.
find
perintah yang mendukung opsi-opsi itu. Terkadang grep
menjadi satu-satunya pilihan.
find
akan menemukan semua file yang cocok dengan suatu pola:
find . -name "*foo"
Namun, jika Anda menginginkan gambar:
tree -P "*foo"
Semoga ini membantu!
brew install tree
untuk pengguna Mac OSX tanpa apt-get
diinstal
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
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 ~/.bashrc
file pengguna Anda .
Lalu saya bisa mencari file apa pun dengan mengetik:
f some_name
Atau Anda dapat menggunakan fd
utilitas dengan sintaks sederhana, mis fd pattern
.
shopt -s globstar
perintah. Ini didukung dalam Bash, zsh dan shell serupa.
bash-3.2$ shopt -s globstar
memberibash: shopt: globstar: invalid shell option name
fd
Jika find
terlalu lambat, coba fd
utilitas - alternatif sederhana dan cepat untuk find
ditulis dalam Rust.
Sintaksis:
fd PATTERN
Demo:
Beranda: https://github.com/sharkdp/fd
asciicast2vector
bisa digunakan.
find <directory_path> -type f -name "<wildcard-match>"
Dalam wildcard-match Anda dapat memberikan string yang ingin Anda cocokkan misalnya * .c (untuk semua file c)
Kamu bisa menggunakan:
# find . -type f -name 'text_for_search'
Jika Anda ingin menggunakan penggunaan REGX -iname
# find . -type f -iname 'text_for_search'
Cara default untuk mencari file rekursif, dan tersedia dalam banyak kasus
find . -name "filepattern"
Itu mulai traversing rekursif untuk nama file atau pola dari dalam direktori saat ini di mana Anda berada. 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 setelah itu 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
atauman locate
Selain itu, Anda dapat mengonfigurasi loc untuk memperbarui database pada waktu yang dijadwalkan melalui pekerjaan cron, jadi cron sampel yang memperbarui db 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.
Saya terkejut melihat bahwa loc tidak banyak digunakan ketika kita akan pergi secara rekursif.
Pertama-tama saya akan mencari "$ PWD" untuk mendapatkan daftar file di folder saat ini yang menarik, dan kemudian jalankan greps pada mereka sesuka saya.
locate "$PWD" | grep -P <pattern>
Tentu saja, ini mengasumsikan bahwa updateb dilakukan dan indeks diperbarui secara berkala. Ini adalah cara yang jauh lebih cepat untuk menemukan file daripada menjalankan find dan memintanya turun pohon. Menyebutkan ini untuk kelengkapan. Tidak ada salahnya menggunakan find, jika pohon tidak terlalu berat.
locate "$PWD*.mp4"
Hanya untuk mengingatkan bahwa Anda mungkin dapat melewatigrep
Perintah di bawah ini membantu untuk mencari file
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 | Contoh grep -v "Izin ditolak"
find / -iname 'C * .xml' 2> & 1 | grep -v "Izin ditolak"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
find / -iname '*C*.xml' 2>/dev/null
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 nama * .conf .
Menggunakan
find path/to/dir -name "*.ext1" -o -name "*.ext2"
Penjelasan
find
melakukan rekursi.-o
singkatan -or
. Jadi di atas berarti mencari wildcard ini ATAU yang ini. Jika Anda hanya memiliki satu pola maka tidak perlu -o
.