Jawaban:
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, -namepeka 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 finddan man grepuntuk lebih jelasnya.
<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 menggunakan filename, 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 setuju FILENAMEmungkin lebih mudah untuk dipahami.
find -iname <filename>lebih baik karena case-insensitive seperti DOS
Beberapa kerang memungkinkan ls **/filename, yang cukup nyaman.
shopt -s globstar; echo **/filenamesetara dengan find . -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.
shoptperintah memungkinkan opsi globstar on. Sekarang ini berfungsi seperti pesona. Terima kasih banyak.
Anda dapat melakukannya dengan
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'(Saya tidak tahu apakah egrepbagian itu penting, tetapi Anda menggunakan egrepjawaban Anda jadi saya memasukkannya)
grepmenggunakan 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 jalan
<filename>berisi wildcard, gunakan tanda kutip di sekitarnya, misfind . -name '*.txt'.