Чтобы переименовать файлы при их перемещении, это сложнее. Один из способов - создать цикл, который передает каждое имя файла через tr / _, который преобразует косые черты в символы подчеркивания.
find src/dir/ -name '*.txt' | while read file; do
mv "$file" "target/dir/$(tr / _ <<< "$file")"
done
Это будет работать быстрее, чем любая опция с -exec, поскольку она не будет вызывать синхронный процесс mv для каждого файла, который нужно переместить.