Trova file con determinate estensioni


67

Come posso usare findper trovare tutti i file che hanno un'estensione .xlso .csv? Ho visto -regexun'opzione ma non so come usarla.

Risposte:


115

Perché non usare semplicemente questo:

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

Non hai bisogno di regex per questo.

Se vuoi assolutamente usare regex, usa semplicemente

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

8
Risposta migliore della mia. +1.
Paul Tomblin,

1
Perché è necessaria una barra rovesciata prima della parentesi? So che non funziona senza di essa, ma sembra che dovrebbe.

1
perché sono espressioni regolari di emacs per impostazione predefinita. usa -regextype per cambiarlo.

4
Solo per la cronaca: non riesco mai a ricordare quali strumenti vogliono "\ (" per il raggruppamento e quali vogliono "(". Devo sempre provarlo per conoscerlo.
Joachim Sauer,

1
L'esempio regex non funziona
hostmaster l'

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

Non sapevo dell'opzione -o. Grazie!

1
Ha bisogno di parentesi? trova . '(' -name * .xls -o -name * .csv ')' - stampa

@Adrian - no, non lo fa. Non sono sicuro che avrebbe bisogno di parentesi su una ricerca non GNU in cui "-print" non era già l'azione predefinita.
Paul Tomblin,

5
Bene, GNU find (impostazione predefinita su Ubuntu 11.04) funziona correttamente sia con parentesi che -print O senza (parentesi e -print). Ma find . -name \*.xls -o -name \*.csv -printgenera solo file corrispondenti a .csv,
bbaja42

Hai ragione, ho bisogno dei genitori.
Paul Tomblin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.