2011-10-08 13 views

risposta

20

È possibile utilizzare l'utilità find. Qualcosa del genere:

find /path/to/look/in -name '*somestring*' -print 

Su alcuni sistemi, se si omette il percorso, viene utilizzata la directory corrente. Su altri sistemi non puoi ometterlo, usa invece . per la directory corrente.

Inoltre, leggere man find per molte altre opzioni.

+1

Questa è la risposta. A meno che tu non stia utilizzando le funzionalità di rilevamento dei tipi di file di Ack, 'find' è la strada da percorrere. –

-2

questo funziona per me, ack -all "somestring" dove as ack - tutto "somestring" cercherà tutti i file che contengono quella stringa. ack "somestring" cercherà solo i file con quella stringa. se volessi aggiungere qualche tipo di file per cercare in modo permanente come i file ruby ​​o puoi creare un file .ackrc nella tua home directory, aggiungi la linea maggese --type-add = ruby ​​= .haml, .rake, .rsel. Josh

+0

Questo sembra cercare i contenuti del file. Non è quello che la domanda ha chiesto. – isherwood

40

Sono d'accordo trovato è la strada da percorrere, ma si potrebbe facilmente farlo con ACK:

ack -f | ack "string" 

Qui, "ACK -f" ricorsivamente elenca tutti i file che sarebbe cercare; instradare quello al secondo comando ack per cercarlo. ack -f ha il vantaggio di saltare su binari e directory anche senza altri argomenti; spesso, quindi un comando "trova" potrebbe essere sostituito da un comando "ack" molto più breve.

+0

Trova è più veloce. – sloven

+0

ack -f | rg "string" – arpit

0

Non riesco ancora a commentare, altrimenti aggiungo questo alla risposta di @ dmedvinsky sopra. Si consiglia di combinare il suo approccio con @ Whaley di answer to a different question al fine di filtrare i .svn file:

find /path/to/look/in -not -iwholename '*.svn*' -name '*somestring*' -print 
3

Se si desidera utilizzare ack per trovare tutti i file che hanno somestring nella loro nome base, basta aggiungere [^/]*$ alla regex, ad esempio,

ack -g somestring[^/]*$ 

Sfortunatamente, --color mostrerà la partita dal somestring alla fine del nome; ma è possibile fare ciò che hai chiesto usando ack.

Problemi correlati