Мне не известна сложная библиотека grep Сильный текст, но вы правы: это не сложно написать.
Я предлагаю комбинацию commons-io
и String.matches(someRegex)
:
public class Grep extends DirectoryWalker
{
public Grep(){
super();
}
public List clean(File startDirectory){
List results = new ArrayList();
walk(startDirectory, results);
return results;
}
protected boolean handleDirectory(File directory,
int depth, Collection results){
// Decide if a (sub) directory will be handled for recursive search
return true;
}
protected void handleFile(File file, int depth, Collection results)
{
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try{
while (it.hasNext()){
String line = it.nextLine();
if(line.matches("myRegEx")){
results.add(file);
}
}
}
finally {LineIterator.closeQuietly(it);}
}
}
Обновление Марко указал Unix4j
, что является довольно интересной библиотекой, которая эмулирует конвейерную Unix |
с цепочкой Java-методов. grep
поддерживается, а также cat, cd, cut, echo, find, grep, head, ls, sed, sort, tail, uniq, wc, barges
.