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 f
limitará 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
echo
do 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