Find all files matching 'name' on linux system, and search with them for 'text'

前端 未结 5 1504
猫巷女王i
猫巷女王i 2020-12-24 12:04

I need to find all instances of \'filename.ext\' on a linux system and see which ones contain the text \'lookingfor\'.

Is there a set of linux command line operation

相关标签:
5条回答
  • 2020-12-24 12:37

    I find the following command the simplest way:

    grep -R --include="filename.ext" lookingfor
    

    or add -i to search case insensitive:

    grep -i -R --include="filename.ext" lookingfor
    
    0 讨论(0)
  • 2020-12-24 12:43

    Try:

    find / -type f -name filename.ext -exec grep -H -n 'lookingfor' {} \;
    

    find searches recursively starting from the root / for files named filename.ext and for every found occurrence it runs grep on the file name searching for lookingfor and if found prints the line number (-n) and the file name (-H).

    0 讨论(0)
  • 2020-12-24 12:50

    Go to respective directory and type the following command.

    find . -name "*.ext" | xargs grep 'lookingfor'

    0 讨论(0)
  • 2020-12-24 12:51

    A more simple one would be,

    find / -type f -name filename.ext -print0 | xargs -0 grep  'lookingfor'
    

    -print0 to find & 0 to xargs would mitigate the issue of large number of files in a single directory.

    0 讨论(0)
  • 2020-12-24 12:52
    find / -type f -name filename.ext -exec grep -l 'lookingfor' {} +
    

    Using a + to terminate the command is more efficient than \; because find sends a whole batch of files to grep instead of sending them one by one. This avoids a fork/exec for each single file which is found.

    A while ago I did some testing to compare the performance of xargs vs {} + vs {} \; and I found that {} + was faster. Here are some of my results:

    time find . -name "*20090430*" -exec touch {} +
    real    0m31.98s
    user    0m0.06s
    sys     0m0.49s
    
    time find . -name "*20090430*" | xargs touch
    real    1m8.81s
    user    0m0.13s
    sys     0m1.07s
    
    time find . -name "*20090430*" -exec touch {} \;
    real    1m42.53s
    user    0m0.17s
    sys     0m2.42s
    
    0 讨论(0)
提交回复
热议问题