GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare tutti i file che non contengono una stringa di testo?

Che cosa conciso comando posso usare per trovare tutti i file che NON contengono una stringa di testo?

Ho provato questo (usando -v per invertire i parametri di grep) senza fortuna:

find . -exec grep -v -l shared.php {} ;

Qualcuno ha detto che avrebbe funzionato:

find . ! -exec grep -l shared.php {} ;

Ma non sembra funzionare per me.

Questa pagina ha questo esempio:

find ./logs -size +1c  > t._tmp
while read filename
do
     grep -q "Process Complete" $filename
     if [ $? -ne 0 ] ; then
             echo $filename
     fi
done < t._tmp
rm -f t_tmp

Ma è ingombrante e per niente conciso.

ps:so che grep -L * lo farà, ma come posso usare il comando find in combinazione con grep per i file esclusi è quello che voglio davvero sapere.

pss:Inoltre non sono sicuro di come fare in modo che grep includa le sottodirectory con grep -L * sintassi, ma voglio comunque sapere come usarlo con find 🙂

Risposta accettata:

find . -type f | xargs grep -H -c 'shared.php' | grep 0$ | cut -d':' -f1    

O

find . -type f -exec grep -H -c 'shared.php' {} ; | grep 0$ | cut -d':' -f1

Qui stiamo calcolando il numero di righe corrispondenti (usando -c ) in un file se il conteggio è 0, allora è il file richiesto, quindi tagliamo la prima colonna, ovvero il nome del file dall'output.


Linux
  1. Come trovare più stringhe nei file??

  2. Come trovare tutti i file sparsi in Linux

  3. Comando Linux:come "trovare" solo file di testo?

  4. Come trovare file di testo che non contengono testo su Linux?

  5. Come gzippare tutti i file in tutte le sottodirectory in bash

Come trovare una stringa o una parola specifica in file e directory

Grep Command in Linux (Trova testo nei file)

Come trovare una stringa in un file su Linux

Come trovare file contenenti una stringa di testo specifica in Linux

Trova testo nei file su Linux usando grep

Come ottenere righe che contengono stringhe in un file?