Usando sua expressão de corte de arquivo para determinar o nome do diretório:
find . -type f -exec bash -c 'd="../$(file -b "$1"|cut -d " " -f 1)"; mkdir -p "$d"; cp "$1" "$d" ' none {} \;
Como funciona
-
d=../$(file -b "$1"|cut -d " " -f 1)
Isto encontra o nome do diretório correspondente ao tipo do arquivo. Eu adicionei
../
para colocá-los sob o diretório pai. Você pode querer colocá-los em outro lugar. -
mkdir -p "$d"
Isso cria o diretório, se ainda não existir.
-
cp "$1" "$d"
Isto copia o arquivo para o diretório.