Thanks to @Chronial, I was able to cook a script to massage my git repo according to my needs:
git filter-branch --prune-empty --index-filter '
# Delete files which are NOT needed
git ls-files -z | egrep -zv "^(NAME1|NAME2|NAME3)" |
xargs -0 -r git rm --cached -q
# Move files to root directory
git ls-files -s | sed -e "s-\t\(NAME1\|NAME2\|NAME3\)/-\t-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
( test ! -f "$GIT_INDEX_FILE.new" \
|| mv -f "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE" )
'
Basically what this does is this:
Deletes all files outside of the three directories NAME1, NAME2 or NAME3 that I need (one project was renamed NAME1 -> NAME2 -> NAME3 during its lifetime).
Moves everything inside these three directories to the root of the repository.
I needed to test if "$GIT_INDEX_FILE.new" exists since import of svn into git creates commits without any files (directory-only commits). Needed only if the repo was created with 'git svn clone' initially.