Find files that does not contain a string

后端 未结 5 980
不思量自难忘°
不思量自难忘° 2020-12-31 18:18

To find all the files that contain \"foo\" in current folder, I use:

grep -r \"foo\" .

To find all the files that contain \"bar\" in curren

相关标签:
5条回答
  • 2020-12-31 18:27

    With awk, something like:

    awk 'BEGIN {f=ARGV[1] ; ff=0} f != FILENAME { if ( ff>0 ) { print f } ; ff=0 ; f=FILENAME } /SEARCHSTRING/ {ff=1} END {if ( ff>0 ) { print f } }' INPUT_FILE_LIST(PATTERN)
    

    Basically it reads every input file and if sees your SEARCHSTRING (which can be a regex), it saves that info. After finishing the current file (or after the last file), check if it found something, and if so, print the previous filename.

    0 讨论(0)
  • 2020-12-31 18:35

    Recursively searches directories for all files that do no contains XYZ

    find . -type f | xargs grep -L "XYZ"
    
    0 讨论(0)
  • 2020-12-31 18:39

    To print lines that do not contain some string, you use the -v flag:

    grep -r -v "bar" . | grep -v "foo"
    

    This gives you all lines that do not contain foo or bar.

    To print files that do not contain some string, you use the -L flag. To non-match several strings, you can use regular expressions with the -P flag (there are several regex flags you can use):

    grep -r -L -P "(foo|bar)" .
    

    This prints a list of files that don't contain foo or bar.

    Thanks to Anton Kovalenko for pointing this out.

    0 讨论(0)
  • 2020-12-31 18:50

    Try this one:

      grep  -L -e  "foo\|bar" *
    
    0 讨论(0)
  • 2020-12-31 18:50

    Try the below. this should work

    grep -rL -P "(foo|bar)" .

    0 讨论(0)
提交回复
热议问题