portably:
cd &&
find . -path ./junk -prune -o -type f \( \
-name '*.h' -o -name '*.cpp' \) -exec sh -c '
exec mv -i "$@" junk' sh {} +
Acima de excluir a própria pasta junk
da pesquisa.
Estamos removendo apenas arquivos regulares ( -type f
). Pode haver outros tipos de arquivos que você deseja mover como links simbólicos, mas cuidado com o fato de que mover links simbólicos frequentemente os quebra.
O -i
é uma proteção para evitar que dois arquivos com o mesmo nome se sobreponham mutuamente.