Temukan file dengan ekstensi tertentu

67

Bagaimana saya dapat menggunakan finduntuk menemukan semua file yang memiliki .xlsatau .csvekstensi? Saya telah melihat -regexopsi tetapi saya tidak tahu bagaimana menggunakannya.

Risto Salminen
sumber

Jawaban:

115

Mengapa tidak menggunakan ini saja:

find -name "*.xls" -o -name "*.csv"

Anda tidak perlu regex untuk ini.

Jika Anda benar-benar ingin menggunakan regex cukup gunakan

find -regex ".*\.\(xls\|csv\)"
Joachim Sauer
sumber
8
Jawaban yang lebih baik dari saya. +1.
Paul Tomblin
1
Mengapa backslash diperlukan sebelum tanda kurung? Saya tahu itu tidak akan berhasil tanpanya, tetapi sepertinya memang seharusnya begitu.
1
karena mereka adalah emacs regular expressions secara default. gunakan -regextype untuk mengubahnya.
4
Sebagai catatan: Saya tidak pernah dapat mengingat alat mana yang ingin "\ (" untuk pengelompokan dan yang ingin "(". Saya selalu harus mencobanya untuk mengetahuinya.
Joachim Sauer
1
contoh regex tidak berfungsi
hostmaster
12
find . \( -name  \*.xls -o -name \*.csv \) -print
Paul Tomblin
sumber
Tidak tahu tentang opsi -o. Terima kasih!
1
Apakah itu membutuhkan tanda kurung? Temukan . '(' -name * .xls -o -name * .csv ')' - print
@Adrian - tidak, tidak. Saya tidak yakin apakah perlu parens pada non-GNU menemukan di mana "-print" belum menjadi tindakan default.
Paul Tomblin
5
Yah, GNU find (default pada ubuntu 11.04) bekerja dengan benar dengan parens dan -print ATAU tanpa (parens dan -print). Tetapi find . -name \*.xls -o -name \*.csv -printoutput hanya file yang cocok dengan .csv,
bbaja42
Kau benar, aku butuh orangtua.
Paul Tomblin