Com um diretório parecido com
$ ls
another.doc file.txt file1.mp3 myfile.txt
Podemos criar uma lista de extensões de arquivos com este comando:
$ exts=$(ls | sed 's/^.*\.//' | sort -u)
Podemos percorrer essas extensões movendo os arquivos para subdiretórios:
$ for ext in $exts
> do
> echo Processing $ext
> mkdir $ext
> mv -v *.$ext $ext/
> done
Quando isso é executado, obtemos a seguinte saída:
Processing doc
'another.doc' -> 'doc/another.doc'
Processing mp3
'file1.mp3' -> 'mp3/file1.mp3'
Processing txt
'file.txt' -> 'txt/file.txt'
'myfile.txt' -> 'txt/myfile.txt'
O resultado:
$ ls
doc/ mp3/ txt/
$ ls *
doc:
another.doc
mp3:
file1.mp3
txt:
file.txt myfile.txt