Belirli uzantılara sahip dosyaları bulma


67

findBir uzantısı .xlsveya .csvuzantısı olan tüm dosyaları bulmak için nasıl kullanabilirim ? Bir -regexseçenek gördüm ama nasıl kullanılacağını bilmiyorum.

Yanıtlar:


115

Neden sadece bunu kullanmıyorsunuz:

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

Bunun için regex gerekmez.

Kesinlikle regex kullanmak istiyorsanız, sadece kullanmak

find -regex ".*\.\(xls\|csv\)"

8
Benimkinden daha iyi cevap. +1.
Paul Tomblin

1
Parantezden önce neden bir ters eğik çizgi gerekli? Onsuz çalışmadığını biliyorum ama olması gerektiği gibi görünüyor.

1
çünkü bunlar varsayılan olarak normal ifadelerdir. bunu değiştirmek için -regextype kullanın.

4
. Sadece kayıt için: I can araçları istediğiniz asla hatırlamak "\ (" gruplama ve hangi istiyoruz "(" için Hep bilmek denemek zorundayız.
Joachim Sauer

1
regex örneği işe yaramıyor
hostmaster

12
find . \( -name  \*.xls -o -name \*.csv \) -print

-O seçeneğini bilmiyordum. Teşekkürler!

1
Parantez gerektiriyor mu? Bul '(' -name * .xls -o -name * .csv ')' - yazdır

@Adrian - hayır, değil. GNU’lu olmayan bir ailenin “-print” in zaten varsayılan eylem olmadığı durumlarda bulmasına ihtiyaç duyacağından emin değilim.
Paul Tomblin

5
Eh, GNU bulma (ubuntu 11.04'te varsayılan) hem parens hem de -print VEYA olmadan (parens ve -print) düzgün çalışır. Ancak find . -name \*.xls -o -name \*.csv -printyalnızca dosyaları eşleşen .csv,
bbaja42 14

Haklısın, parenlere ihtiyacım var.
Paul Tomblin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.