Katakan ada file dengan nama:
batman.c
debate.c
cricketbat.c
Perintah apa dan bagaimana saya harus menggunakannya untuk mencantumkan semua file ini dengan menggunakan tag pencarian bat
?
command-line
files
search
find
srk_cb
sumber
sumber
Jawaban:
Menemukan File dengan
bat
Di Mana SajaUntuk menemukan semua file di mana saja di dalam
/path/to/folder
yang namanya mengandungbat
, Anda dapat menggunakan:Saya telah mengutip pola pencarian
*bat*
karena, jika tanda kutip dihilangkan dan file sesuai*bat*
dalam direktori saat ini, shell akan memperluas*bat*
ke dalam daftar mereka dan lulus yang kefind
. Makafind
tidak akan berhasil. (\*bat\*
dan"*bat*"
juga bekerja.)Untuk mencari di folder Anda saat ini (misalnya, bahwa Anda telah
cd
diedit), gunakan.
, seperti biasa:Untuk mencari seluruh komputer Anda, gunakan
/
. Untuk mencari direktori home Anda, gunakan~
, atau nama lengkap direktori home Anda. ( Shell mengembang~
ke jalur direktori home yang memenuhi syarat.)Memperluas atau Mempersempit Pencarian Anda, Berdasarkan Nama
Jika Anda ingin mencari kasus-insensitively, sehingga file yang berisi
BAT
,bAt
dan sebagainya dicocokkan, menggunakan-iname
tes bukan-name
tes:Saya perhatikan semua file Anda berakhir
.c
. Jika Anda hanya ingin menemukan file seperti itu, gunakan:Saya perhatikan semua nama file Anda ada
bat
di bagian paling awal atau paling akhir sebelum.c
suffix. Jika Anda ingin menghindari pencocokan file sepertiembattled.c
, Anda dapat menggunakan:-o
adalah operator atau .Hanya Mencocokkan File
Untuk menemukan hanya file biasa - dan bukan folder, tautan simbolik, dan simpul perangkat khusus - yang dapat Anda gunakan
-type f
. Ini sering direkomendasikan dan kadang-kadang cukup tepat ... tetapi sering kali bukan yang Anda inginkan , terutama jika Anda berlarifind
dengan tujuan memeriksa output sendiri. Jika Anda memiliki tautan simbolis yang cocok dengan pencarian Anda, tidakkah Anda ingin mengetahuinya?Jika Anda ingin menemukan file biasa dan tautan simbolik, Anda dapat menggunakan:
Itu menggunakan
-o
operator dan juga tanda kurung untuk pengelompokan (yang harus dikutip agar shell tidak memperlakukan mereka secara khusus; jika tidak, Anda akan mendapatkan kesalahan sintaksis).Tetapi misalkan Anda hanya ingin melihat tautan simbolis yang pada akhirnya mengarah ke file biasa (dan bukan tautan simbolis ke direktori, simpul perangkat, dll.). Itu sebenarnya lebih sederhana: gunakan
-xtype
bukan-type
. Asalkan Anda tidak menjalankanfind
dengan-L
bendera,-xtype
pada tautan simbolik menguji jenis file yang ditunjukkan oleh tautan tersebut.Jika Anda memiliki symlink ke symlink lain ke sebuah file,
-xtype f
akan cocok dengan itu meskipun target langsungnya adalah symlink lain daripada file biasa. Ini hampir selalu yang Anda inginkan.Seringkali orang mengira mereka menginginkannya
-type f
, tetapi sebenarnya mereka menginginkannya-xtype f
.Mendapatkan Output Rinci
find
Tindakan default jika Anda tidak menentukan satu adalah-print
. Semua perintah yang diberikan di atas setara dengan diri mereka sendiri dengan-print
ditempel di akhir.find
sering digunakan untuk menjalankan perintah berdasarkan file yang ditemukan - seringkali, perintah yang membuat perubahan. Tetapi ada juga tindakan lain yang tujuannya adalah untuk menampilkan hasil, selain itu-print
. Yang menarik adalah-ls
:Ini memberikan informasi terperinci tentang setiap file, dalam format multi-kolom, mirip dengan (meskipun tidak sama dengan) apa yang akan Anda lihat dengan menjalankan .
ls file
Bacaan lebih lanjut
Untuk informasi lebih lanjut tentang
find
dan cara lain untuk menemukan file, lihat:find
halaman pengguna , dapat diakses secara online atau dengan menjalankanman find
di terminal.find
,locate
, danxargs
utilitas.sumber
-xtype
nasihatnya; mungkinls *bat*
dan-maxdepth
/mindepth
juga layak disebut.ls
sudah dibahas , saya fokus pada kasus rekursif dengan difind
sini. Tentu saja, jawaban terperinci yang mencakup daftar nama file yang tidak (atau kurang) rekursif cocok dengan beberapa pola (ls
danfind
dengan-maxdepth
) juga akan berguna. Anda mungkin ingin memposting jawaban seperti itu!Cara termudah adalah menjalankannya
Dengan cara ini Anda dapat mencari di seluruh komputer file yang berisi "bat" dalam nama file
Untuk menyegarkan daftar file di PC Anda dijalankan
Jalankan perintah ini ketika Anda baru saja menambahkan file baru ke akun Anda
sumber
updatetdb
updatedb
terakhir secara manual atau secara otomatis dijalankan),sudo updatedb
perlu dijalankan terlebih dahulu, ya.bat
.find /
sebagailocate
pencarian dari database, sementarafind
daftar rekursif/
dan kemudian cocok dengan regex.Buka terminal dan ubah direktori ke direktori dari mana Anda ingin mulai mencari dan kemudian jalankan perintah ini:
The
.
dimulai perintah find dari direktori saat ini.The
-name
cocok stringbat
dan kasus sensitif. (-iname
Peka terhadap huruf)The
-type f
pencarian untuk file saja.sumber
Jika file-file tersebut dalam direktori saat ini gunakan:
Atau (memilikinya baris demi baris):
Jika Anda ingin mencari sistem untuk file-file itu, gunakan:
sumber
Anda ingin menggunakan
find
perintah, dengan-iname
opsi untuk pencocokan nama file case sensitif, atau-name
opsi untuk nama file case sensitif cocok. Keduanya akan memungkinkan Anda menggunakan nama wildcard. Jadi, untuk menemukan nama file yang berisi "bat", Anda akan menggunakan:Atau
The
*
berarti "karakter (s)", sehingga pencarian mencaribat
dengan karakter, termasuk tidak ada, sebelum atau setelah itu. The/
pencarian dari direktori root rekursif, Anda dapat menggunakan.
yang akan mencari secara rekursif dari direktori saat ini, atau path absolut untuk di mana Anda ingin mencari dari. Lihatlah bagaimana mencari file menggunakan regex di skrip shell linuxsumber
-type f
, yang tidak lebih dari sekadar mengecualikan direktori dan seringkali bukan apa yang benar-benar diinginkan pengguna .Gunakan yang lama yang baik
find
.misalnya.:
dari
man find
:sumber