Search keywords inside of directories and files

A

Ahmet Kilic

I need some help about keywords searching in directory and files.

I have a directory
dirs--a
|--b
|--c
and files
a-->a1.txt
|-->a2.txt
|-->a3.txt

I can lsit all files and directories like this,

require 'find'
dirs = ['C:\\Users\\test\\dirs']
keywords = ["keyword1","keyword2"]
for dir in dirs
Find.find(dir) do |path|
if FileTest.directory?(path)
if keywords.include?(File.basename(path))
# make something here... and output the finding data
else
Find.prune # skip the files
next
end
else
puts path
end
end
end

how can I do it and how can I print output the results in a text or csv
file?
Or need a plugin like Ferret?
please help me.
 
R

Rodrigo Bermejo

Ahmet said:
I need some help about keywords searching in directory and files.

I have a directory
dirs--a
|--b
|--c
and files
a-->a1.txt
|-->a2.txt
|-->a3.txt

I can lsit all files and directories like this,

require 'find'
dirs = ['C:\\Users\\test\\dirs']
keywords = ["keyword1","keyword2"]
for dir in dirs
Find.find(dir) do |path|
if FileTest.directory?(path)
if keywords.include?(File.basename(path))
# make something here... and output the finding data
else
Find.prune # skip the files
next
end
else
puts path
end
end
end

how can I do it and how can I print output the results in a text or csv
file?
Or need a plugin like Ferret?
please help me.


To write to a file you need something like this:
f=File.new("w","myfile.txt")
f << "line 1"
f << "line 2"
f.close
 
R

Rodrigo Bermejo

To write to a file you need something like this:
f=File.new("w","myfile.txt")
f << "line 1"
f << "line 2"
f.close
Sorry it should be filename, mode ..this way is the correct.
f=File.new("myfile.txt","w)
 
A

Ahmet Kilic

Rodrigo said:
Sorry it should be filename, mode ..this way is the correct.
f=File.new("myfile.txt","w)

It is OK. Thank you very much.
I don't want to print the whole line,
I want to print some sql special words,
for example;
1- if the line start with comment(//) do not print the line.
2- if line contain "find" and I want to print the leftside of "::" or
class name (like this ClassBase::Class print ClassBase)
3- if line contain "find" and I want to print the sql commands (like
insert update ...), table and column names. ( like this; insert into
tableA where
columnA, columnB, columnC... print he TableA and ColumnA, columnB,
columnC ...)

please help me.
 
A

Ahmet Kilic

Ahmet said:
It is OK. Thank you very much.
I don't want to print the whole line,
I want to print some sql special words,
for example;
1- if the line start with comment(//) do not print the line.
2- if line contain "find" and I want to print the leftside of "::" or
class name (like this ClassBase::Class print ClassBase)
3- if line contain "find" and I want to print the sql commands (like
insert update ...), table and column names. ( like this; insert into
tableA where
columnA, columnB, columnC... print he TableA and ColumnA, columnB,
columnC ...)

please help me.

what I done so far;

1- i think it OK.
2- It almost done but I can do print it with this code
text[/(D.*)+::/], if the line contains second :: it print also. I
dontwant it.
3- maybe 50 percent, i can print
text.grep( /FROM\s+(.*?)\s+WHERE/ ) do |line|
puts line
end

but it is not what I want.

please help me!...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top