Estou procurando uma maneira de obter find e xargs (GNUWin32, no Win7, ambos os programas na versão 4.1), com nomes de arquivos que contêm espaços.
Colocando os nomes de arquivos em xargs , como se fosse um desafio, mas parece que não há como consegui-los em uma única peça. Infelizmente, xargs retira as cotações, não importa o que eu tente.
Isso faz com que lame (que deve ser chamado de xargs ) se queixe de argumentos supérfluos, pois os nomes de arquivos contêm espaços.
Sim, estou ciente da opção find -exec (que funcionaria sem xargs ), estou explicitamente não interessado nisso, pois desejo executar 8 instâncias paralelas de lame para um tarefa em lote um tanto computacionalmente intensiva (recodifique aproximadamente 1.800 192kbit / s audiobook mp3s para que eles caibam no cartão micro-sd do meu player). Isto é, xargs -P 8 .
Este comando:
find . -name "*.mp3" -printf "\"%P\" --abr 52 -q 0 --silent \"conv/%P\" " | xargs -n 7
produzirá algo parecido com:
path/01.01 foo bar.mp3 --abr 52 -q 0 --silent conv/path/path/01.01 foo bar.mp3
... que ainda não tem aspas, então se eu colocar lame no final desse comando, ele considerará path/01.01 como entrada, foo como saída e reclamará que existe um% co_de supérfluo % argumento.
- Eu tentei adicionar apóstrofos (em torno das aspas e dentro deles), mas "xargs" também os exclui.
-
bar.mp3 também não fará (pelo menos para qualquer coisa que eu tentei).
- Eu tentei simular
-print0 com -print0 e printf , sem sucesso.
- Enquanto isso, estou jogando com a ideia de redirecionar a saída para um arquivo e adicionar as cotações com um editor de texto ...