Supondo que o diretório atual tenha as subpastas, substitua TARGET_DIR na seguinte instrução em uso:
find . -name '*.mp3' -exec mv {} TARGET_DIR \;
Eu tenho um diretório:
../Music
com muito de arquivos de música em muito de subdiretórios.
Como eu movo todos os arquivos nos subdiretórios para outro diretório?
Assim, eu somente quer mover os arquivos, não quero manter a estrutura do subdiretório.
Supondo que o diretório atual tenha as subpastas, substitua TARGET_DIR na seguinte instrução em uso:
find . -name '*.mp3' -exec mv {} TARGET_DIR \;
Tente isto:
cd ../Music
for i in 'ls -Q'; do mv $i/* /Path/To/Some/Other/Directory; done
Sugiro usar cp
em vez de mv
para verificar se está funcionando bem ou não. e se estiver funcionando, apenas apague o diretório ..Music
Editar: adicionado -Q
(e necessário adicionar esta explicação para ir além de seis caracteres)
A primeira resposta está correta, mas uma maneira mais fácil de fazer isso, supondo que você tenha apenas uma camada de subdiretórios, é:
mv ../Music/*/*.mp3 [insert target dest here]
Você também pode usar o Rhythmbox, o banshee ou um software semelhante. Eles podem verificar seus diretórios de música.
Você pode optar por preservar o diretório ou (no seu caso) o software pode mover os arquivos para um diretório rhythmbox / banshee que eliminaria a hierarquia como você queria.
Então,
cp /target/directory/* /desination/directory/ -r
Em seguida, exclua o original, se tiver êxito.
(cd ~/Music ; tar cf - ) | (cd /path/to/other/directory; tar xf -)