Finden Sie Dateien mit bestimmten Erweiterungen


67

Wie kann ich findalle Dateien finden, die eine .xlsoder eine .csvErweiterung haben? Ich habe eine -regexOption gesehen, weiß aber nicht, wie ich sie verwenden soll.

Antworten:


115

Warum nicht einfach das benutzen:

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

Sie brauchen dafür keinen regulären Ausdruck.

Wenn Sie unbedingt Regex verwenden möchten, verwenden Sie einfach

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

8
Bessere Antwort als meine. +1.
Paul Tomblin

1
Warum wird vor der Klammer ein Backslash benötigt? Ich weiß, dass es ohne nicht funktioniert, aber es scheint so, als ob es sollte.

1
weil sie standardmäßig emacs reguläre Ausdrücke sind. Verwenden Sie -regextype, um dies zu ändern.

4
Nur zur Erinnerung: Ich kann mich nie erinnern, welche Tools "\ (" zum Gruppieren und welche "(" wollen. Ich muss es immer versuchen, um es zu wissen.
Joachim Sauer

1
Regex-Beispiel funktioniert nicht
Hostmaster

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

Ich wusste nichts über die Option -o. Vielen Dank!

1
Braucht es Klammern? finden . '(' -name * .xls -o -name * .csv ')' - drucken

@ Adrian - nein, tut es nicht. Ich bin mir nicht sicher, ob es Parens für einen Nicht-GNU-Fund braucht, bei dem "-print" nicht bereits die Standardaktion war.
Paul Tomblin

5
Nun, GNU find (Standard unter Ubuntu 11.04) funktioniert korrekt mit Parens und -print ODER ohne (Parens und -print). Es werden jedoch find . -name \*.xls -o -name \*.csv -printnur Dateien
ausgegeben, die

Du hast recht, ich brauche die Eltern.
Paul Tomblin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.