Não, mac
faz um arquivo por vez, então você precisa contornar isso.
Supondo que os arquivos que você deseja codificar / decodificar estejam em pastas ou subpastas específicas, e não em caminhos arbitrários, você pode fazer isso com uma combinação de localizar , sed e xargs .
Por exemplo, para codificar todos os arquivos WAV em uma pasta específica e todas as suas subpastas, com os arquivos de saída simplesmente com a extensão APE, usando o rápido -c1000
preset, você digitaria:
find ~/path/to/folder -name *.wav | sed 's/....$//g' \
| xargs -I MACFILE mac "MACFILE.wav" "MACFILE.ape" -c1000
Explicação:
-
find
localiza todos os arquivos com a extensão wav dentro e abaixo do caminho determinado e os envia.- Você pode usar
'pwd'
(com os backticks) como abreviação para a pasta atual. - Adicione o argumento
-maxdepth 0
para manter apenas a pasta atual e não entrar em subpastas.
- Você pode usar
- A expressão sed exclui (isto é, substitui por "em branco") os últimos quatro caracteres de cada nome de arquivo retornado por find, que é a extensão
.wav
ou.ape
-
xargs alimenta cada nome de arquivo canalizado para o comando
mac
.- O
-I MACFILE
informa xargs para substituir cada ocorrência de MACFILE pela entrada (filename); Desta forma obtemos arquivos com extensões adequadas e não.wav.ape
, etc.
- O
Para decodificar somente dentro da pasta atual , e enviar para uma pasta personalizada, por exemplo:
find 'pwd' -name *.ape -maxdepth 0 | sed 's/....$//g' \
| xargs -I MACFILE mac "MACFILE.ape" "/home/ryan/decodes/MACFILE.wav" -d
Nota: encontrar é um daqueles utilitários que são quase ilimitados (veja
man find
). Com as opções de-exec
e-printf
corretas (e talvez mais), o find pode ser suficiente sem precisar do sed e do xargs , e tenho certeza que alguém vai apontar isso :). Mas acho isso mais fácil de explicar e entender.