Não sei ao certo o que você quer dizer sobre a classificação, a menos que queira alterar o layout do diretório, mas veja por que não está funcionando ...
Parte do problema é que usando '>' você está redirecionando a saída do comando grep para um arquivo chamado 'cp' em vez de usar um pipe '|' para o comando 'cp'.
No entanto, o maior problema é que o comando grep provavelmente nunca está retornando (ou talvez não retornando nada), já que você está usando grep -r '.mp3' ./
em vez de grep '.mp3' -r ./
Além disso, imagino que o grep esteja procurando por .mp3 no < em> conteúdo dos arquivos, em vez dos nomes dos arquivos .
tente:
cd /media/dan/RAID/MUSIC
find . -name '*.mp3'
se isso listar todos os arquivos que você deseja copiar, tente:
find . -name '*.mp3' -exec cp --parents "{}" /home/dan/Music \;
o --exec
executa um comando para cada arquivo correspondido por find, o --parents
preserva o caminho completo do arquivo (caso contrário, todos os arquivos seriam copiados para / home / dan / Music em vez de / home / dan / Music / subdir1, etc.), {}
refere-se ao arquivo atualmente combinado. Eu coloquei aspas em torno dele porque arquivos de áudio geralmente têm espaços neles. o \;
é como você termina o comando para --exec
Espero que isso ajude. Mesmo que não seja altamente recomendável, você procura na página man do find e, possivelmente, xargs, que são uma combinação poderosa onde você pode enviar a saída do find para xargs