Grep

From HalfgeekKB
Jump to navigation Jump to search

Include or exclude filename of matched file

 -H, --with-filename # Default if there are multiple files to search
 -h, --no-filename # Default if there is only one file to search (or stdin)

grep with find

Given the common grep command

grep -R 'pattern' *

a corresponding find -exec command should add -H to include the filename prefix in the results. (This is needed because the filenames are given one at a time.)

find … -exec grep -HR 'pattern' {} \;

If necessary, use the command from Find#Sorting_by_mtime to search on files in date order:

find … -printf '%T@ %p\0' |
sort -zk 1n | # 1n for oldest first, 1nr for newest first
sed -z 's/^[^ ]* //' |
xargs -0i grep -HR 'pattern' {}