Daftar semua file / dir di atau di bawah direktori saat ini yang cocok dengan 'nama file'.
Setara langsung adalah
find . -iname <filename>
yang akan mencantumkan semua file dan direktori yang dipanggil <filename>
dalam direktori saat ini dan setiap subdirektori, mengabaikan case.
Jika versi pencarian Anda tidak mendukung -iname
, Anda dapat menggunakannya -name
. Perhatikan bahwa tidak seperti itu -iname
, -name
peka terhadap huruf besar-kecil.
Jika Anda hanya ingin mendaftar file yang dipanggil <filename>
, dan bukan direktori, tambahkan-type f
find . -iname <filename> -type f
Jika Anda ingin menggunakan wildcard, Anda perlu memberi tanda kutip di sekitarnya, misalnya
find . -iname "*.txt" -type f
jika tidak, shell akan mengembangkannya.
Seperti yang telah ditunjukkan orang lain, Anda juga dapat melakukan:
find . | grep "\.txt$"
grep
akan mencetak garis berdasarkan ekspresi reguler, yang lebih kuat daripada wildcard, tetapi memiliki sintaks yang berbeda.
Lihat man find
dan man grep
untuk lebih jelasnya.
<filename>
berisi wildcard, gunakan tanda kutip di sekitarnya, misfind . -name '*.txt'
.<filename>
sebagai penanda untuk input pengguna adalah kebiasaan buruk di lingkungan baris perintah, di mana< and >
sebagian besar waktu memiliki makna tertentu. Saya sarankan hanya menggunakanfilename
, mungkin FILENAME untuk menekankannya. Kebanyakan orang akan mengerti, dan mereka, yang tidak mau, dapat membahayakan ketika tidak memahami bahwa mereka tidak seharusnya mencapai tanda kurang dari atau lebih besar dari pada.<filename>
adalah konvensi dalam banyak dokumentasi UNIX, jadi saya pikir ini berguna bagi orang untuk menyadarinya, tapi saya setujuFILENAME
mungkin lebih mudah untuk dipahami.find -iname <filename>
lebih baik karena case-insensitive seperti DOSBeberapa kerang memungkinkan
ls **/filename
, yang cukup nyaman.sumber
shopt -s globstar; echo **/filename
setara denganfind . -name "filename"
. Ini juga berfungsi di zsh.shopt -s globstar
, itu mungkin akan bekerja untuk Anda. Penggumpalan rekursif adalah fitur yang hanya tersedia di beberapa shell, dan kadang-kadang tidak diaktifkan secara default.shopt
perintah memungkinkan opsiglobstar on
. Sekarang ini berfungsi seperti pesona. Terima kasih banyak.Anda dapat melakukannya dengan
sumber
find . -regextype posix-egrep -regex '.*filename.*'
(Saya tidak tahu apakahegrep
bagian itu penting, tetapi Anda menggunakanegrep
jawaban Anda jadi saya memasukkannya)grep
menggunakan ekspresi reguler, sedangkan perintah DOS menggunakan shell wildcard.find . -name "*.*"
tidak akan melakukan apa yang Anda harapkan dari latar belakang DOS. Glob cukup dekat untuk dikenali, sementara regex adalah binatang yang sama sekali baru.*.*.*
dilakukan dalam dos modern yaitu windows cmd? Bagaimana dengan*.*.*.*
?Itu bisa juga:
tree -if </your/path>
atau'pwd'
sebagai jalansumber