То, что вы просите во второй части вашего вопроса, может быть сделано с помощью простого:
File dir = new File( "/path/to/dir" );
String[] contents = dir.listFiles();
Первая часть немного сложнее, но она может быть выполнена внутри Java использует ту же технику, которая называется рекурсивно.(for(String fl: contents){ /* do the above */ })
Вам не нужно беспокоиться о поддержке оболочек для вызовов командной строки здесь.Это антиплатформенный независимый.