It then passes grep the -IR flags, the "pattern", and then FILENAME is expanded by xargs to become that list of filenames found by find. o -print0 and you're done with the 4th line.įinally, on the 5th line is the pipe to xargs which takes each of those resulting files and stores them in a variable FILENAME. If you just want "everything else" that remains after pruning the *.gif, *.png, etc. On the 4th line, you need another -o (it specifies "or" to find), the patterns you DO want, and you need either a -print or -print0 at the end of it. Use as many of these -o -name "." -prune constructs as you have patterns. On the 2nd and 3rd lines, use "*.png", "*.gif", "*.jpg", and so forth. (current directory) is a valid path, for example. On the first line, you specify the directory you want to search. | xargs -0 -I FILENAME grep -IR "pattern" FILENAME o -name "another_pattern_to_exclude" -prune \ If you are not averse to using find, I like its -prune feature: Also, I can't install anything, so I have to do with common tools (like grep or the suggested find). I can't search only certain directories (the directory structure is a big mess, with everything everywhere). If there's a better way of grepping only in certain files, I'm all for it moving the offending files is not an option. Searching on grep include, grep include exclude, grep exclude and variants did not find anything relevant exclude=PATTERN Recurse in directories skip file matching PATTERN. I know there are the -exclude=PATTERN and -include=PATTERN options, but what is the pattern format? The man page of grep says: -include=PATTERN Recurse in directories only searching file matching PATTERN. As these results are not relevant and slow down the search, I want grep to skip searching these files (mostly JPEG and PNG images). In the directories are also many binary files which match "foo=". When you use regular expressions with the grep command, you need to tell your system to ignore the special meaning of these metacharacters by escaping them. Ask Question Asked 11 years, 11 months ago. It's on a common Linux machine, I have bash shell: grep -ircl "foo=" * Ignore case switch and caret not working with grep as expected. I'm looking for the string foo= in text files in a directory tree.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |