Usando um loop for
com find
, isso pode não ser o caminho mais rápido para atingir sua meta, mas deve funcionar corretamente:
for dir in DIRECTORY01/*/ ; do fcount=$(find "$dir" -maxdepth 1 -type f \( -name '*.flac' -o -name '*.m4a' -o -name '*.mp3' \) -printf . | wc -c) ; ocount=$(find "${dir/DIRECTORY01/DIRECTORY02}" -maxdepth 1 -type f -name '*.ogg' -printf . | wc -c); if [[ "$fcount" -ne "$ocount" ]]; then echo "$dir has $fcount .flac .m4a and .mp3 files but ${dir/DIRECTORY01/DIRECTORY02} has $ocount .ogg files" ; fi ; done
Ou mais legível
for dir in DIRECTORY01/*/ ; do
fcount=$(find "$dir" -maxdepth 1 -type f \( -name '*.flac' -o -name '*.m4a' -o -name '*.mp3' \) -printf . | wc -c)
ocount=$(find "${dir/DIRECTORY01/DIRECTORY02}" -maxdepth 1 -type f -name '*.ogg' -printf . | wc -c)
if [[ "$fcount" -ne "$ocount" ]]; then
echo "$dir has $fcount .flac .m4a and .mp3 files but ${dir/DIRECTORY01/DIRECTORY02} has $ocount .ogg files"
fi
done
Produzirá algo semelhante a:
DIRECTORY01/Nirvana - Nevermind/ has 12 .flac files but DIRECTORY02/Nirvana - Nevermind/ has 11 .ogg files
Para cada diretório em que as contagens de arquivos não coincidem. O loop não irá lidar normalmente com as condições de erro como um diretório 'Artist - Album' aparecendo em DIRECTORY01, mas não em DIRECTORY02, ou diferenças na ortografia do diretório 'Album - Artist'.