2012-03-28 8 views
6

Nella seguente comando voglio cercare solo solo le directory che sono non nascosti come posso farlo utilizzando il seguente comando .Iwant di ignorare directory nascoste durante la ricerca del file di registroTrova Ricerca comando solo le directory non nascoste

 find /home/tom/project/ -name '.log.txt' 


    ls /home/tom/project/ 
    dir1 
    dir2 
    .backup 
    .snapshot/ 
    .ignore/ 
+0

vuoi dire directory che non vengono nascosti e non hanno genitori nascosti? –

risposta

1

Questo troverà tutti i file ma ignorerà quelli che iniziano con un punto in modo che i file nascosti.

find /home/tom/project/ -type f \(-iname ".log.txt" ! -iname ".*" \) 

EDIT: Se quanto sopra quelli che non funzionano, questo dovrebbe fare il trucco. Ha una regex migliore.

find /home/tom/project/ \(! -regex '.*/\..*' \) -type f -name ".log.txt" 

EDIT2:

Di seguito escluderà le cartelle nascoste, ma cercherà i file nascosti con il tipo di richiesta:

find /home/tom/project/ \(! -regex '.*/\..*/..*' \) -type f -name ".log.txt" 

Edit3:

La soluzione grep :) se questo non funziona sono perso :)

find /home/tom/project/ \(! -regex '.*/\..*/..*' \) -exec grep -l ".log.txt" {} \; 

EDIT4:

Hai provato le soluzioni semplici?

find /home/tom/project/ -type f -name ".log.txt" 

O

find /home/tom/project/ -type f -name "*" -exec grep -l ".log.txt" {} \; 
+0

Punta ancora alle directory nascoste .. – Rajeev

+0

puoi darmi un esempio di cartelle che trova ancora? –

+0

find: loop del filesystem rilevato; './.snapshot/hourly.0 'ha lo stesso numero di dispositivo e inode di una directory che è 2 livelli più in alto nella gerarchia del filesystem. find: loop del filesystem rilevato; './.snapshot/hourly.1 'ha lo stesso numero di dispositivo e inode di una directory che è 2 livelli più in alto nella gerarchia del filesystem. – Rajeev

4

Prova

find /home/tom/project -type d -name '.*' -prune -o -name .log.txt -print 
Problemi correlati