r123454321
r123454321

Reputation: 3403

Finding a particular string at a specific line number, anywhere in a directory

I am trying to find instances of the word package in line 171 of any file in a certain directory. What is the best way to do this?

Upvotes: 1

Views: 24

Answers (2)

P....
P....

Reputation: 18371

#This will search second line of all the files and grep over them.
#Pass search pattern as argument.

pattern=$1

for file in *

do

cat $file |sed -n '2p' |grep $pattern

done

Upvotes: 0

heemayl
heemayl

Reputation: 42007

You can do, from the directory you want to check, recursively:

find . -type f -exec bash -c '[[ $(sed -n '171p' "$1") =~ package ]] && echo "$1"' _ {} +

this will show you the filenames that contain package in their 171-th line.

Non-recursively:

find . -maxdepth 1 -type f -exec bash -c '[[ $(sed -n '171p' "$1") =~ package ]] && echo "$1"' _ {} +

Example:

I am looking for bar:

$ cat foo 
foo
bar

$ find . -type f -exec bash -c '[[ $(sed -n '2p' "$1") =~ bar ]] && echo "$1"' _ {} +
./foo

Upvotes: 1

Related Questions