Znajdź pliki z określonymi rozszerzeniami


67

Jak mogę findznaleźć wszystkie pliki, które mają rozszerzenie .xlslub .csvrozszerzenie? Widziałem -regexopcję, ale nie wiem, jak jej użyć.

Odpowiedzi:


115

Dlaczego nie skorzystać z tego:

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

Nie potrzebujesz do tego wyrażenia regularnego.

Jeśli absolutnie chcesz użyć wyrażenia regularnego, po prostu użyj

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

8
Lepsza odpowiedź niż moja. +1.
Paul Tomblin,

1
Dlaczego ukośnik jest potrzebny przed nawiasiem? Wiem, że bez niego to nie działa, ale wydaje się, że powinno.

1
ponieważ domyślnie są to wyrażenia regularne emacs. użyj -regextype, aby to zmienić.

4
Dla przypomnienia: nigdy nie pamiętam, które narzędzia chcą „\ (” do grupowania, a które chcą ”(„. Zawsze muszę to wypróbować, aby to wiedzieć.
Joachim Sauer,

1
Przykład wyrażenia regularnego nie działa
hostmaster

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

Nie wiedziałem o opcji -o. Dzięki!

1
Czy potrzebuje nawiasów? odnaleźć . '(' -name * .xls -o -name * .csv ')' - druk

@Adrian - nie, nie ma. Nie jestem pewien, czy potrzebowałby parens na znalezieniu innym niż GNU, gdzie „-print” nie było już domyślną czynnością.
Paul Tomblin,

5
Cóż, GNU find (domyślnie w Ubuntu 11.04) działa poprawnie zarówno z parens, jak i -print OR bez (parens i -print). Ale find . -name \*.xls -o -name \*.csv -printwyświetla tylko pliki pasujące do pliku .csv,
bbaja42,

Masz rację, potrzebuję parens.
Paul Tomblin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.