Talvez a maneira mais simples de fazer esse trabalho seja pelo comando find (por padrão, ele funciona recursivamente):
find ~/wav/train/S* -type f -name "*.wav" -exec echo mv {} ~/wav/train/wavs/ \;
-
~/wav/train/S*é o caminho de pesquisa e corresponderá a cada subdiretório que começa comS. -
-type flimitará a pesquisa apenas aos arquivos. -
-name "*.wav"limitará a pesquisa apenas aos arquivos que terminem com.wav. Não obrigatório. -
-exec ... \;executará o comando mencionado uma vez para cada coincidência de pesquisa. -
{}é uma variável que contém o item de coincidência. -
remova
echodo comandoecho mv {} ~/wav/train/wavs/para executar a ação.
Além disso, se você quiser excluir os diretórios, você pode usar um comando como um destes:
find ~/wav/train/S* -type d -name "S*" -exec echo rm -r {} \;
find ~/wav/train/S* -type d -name "S*" -delete