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 ...