Este pequeno scriptlet fará o que você quiser. Execute-o no diretório que contém sua música (você pode copiar / colar diretamente no terminal e teclar Enter ):
## Find all subdirectories of the current directory and
## iterate through them, saving their name in the $d variable.
## There are various tricks used here to deal with spaces and
## weird characters in file names. See http://mywiki.wooledge.org/BashFAQ/020
find . -type d -print0 | while IFS= read -r -d '' dir; do
## Create the $dir/mp3 and $dir/flac directories
## unless they exist
mkdir -p "$dir"/{mp3,flac}
## Move all mp4 files to $dir/mp3
mv "$dir"/*.mp3 "$dir"/mp3 2>/dev/null
## Move all flac files to $dir/flac
mv "$dir"/*.flac "$dir"/flac 2>/dev/null
## The previous steps will also create an artist/mp3 and
## artist/flac directories, and if there were no files in
## the artist directory (only in the albums) these will be empty.
## This deletes them safely since rmdir will only remove empty ones.
rmdir "$dir"/{flac,mp3} 2>/dev/null
done
O comando acima irá transformar isso:
├── artist1
│ ├── album1
│ │ ├── file1.flac
│ │ ├── file1.mp3
│ │ ├── file2.flac
│ │ └── file2.mp3
│ └── album2
│ ├── file1.flac
│ ├── file1.mp3
│ ├── file2.flac
│ └── file2.mp3
└── artist2
├── album1
│ ├── file1.flac
│ ├── file1.mp3
│ ├── file2.flac
│ └── file2.mp3
└── album2
├── file1.flac
├── file1.mp3
├── file2.flac
└── file2.mp3
para isso:
├── artist1
│ ├── album1
│ │ ├── flac
│ │ │ ├── file1.flac
│ │ │ └── file2.flac
│ │ └── mp3
│ │ ├── file1.mp3
│ │ └── file2.mp3
│ └── album2
│ ├── flac
│ │ ├── file1.flac
│ │ └── file2.flac
│ └── mp3
│ ├── file1.mp3
│ └── file2.mp3
└── artist2
├── album1
│ ├── flac
│ │ ├── file1.flac
│ │ └── file2.flac
│ └── mp3
│ ├── file1.mp3
│ └── file2.mp3
└── album2
├── flac
│ ├── file1.flac
│ └── file2.flac
└── mp3
├── file1.mp3
└── file2.mp3