Passar nome do arquivo do comando find and execute

0

Estou tentando escrever um script que encontre determinados arquivos e execute um comando com os arquivos que encontrar. Não parece muito difícil, mas estou tendo muitos problemas para fazê-lo funcionar. Basicamente é isso que estou fazendo:

find /Users/Me/MyFolder -name '*filename.tsv' -print0 -exec /usr/bin/java -jar -Xmx2G /Volumes/Macintosh\ HD/Applications/mMyApp/MyApp.jar -s "," -e "." {}  > {}-new.tsv \;

O resultado é um arquivo chamado {}-new.tsv que contém a saída de MyApp.jar para todos os arquivos encontrados.

Alguém pode lançar alguma luz sobre o que estou fazendo de errado?

    
por Lorenzo 09.06.2016 / 12:24

1 resposta

0

Ok, resolvi. Aparentemente, os aparelhos devem ser mascarados:

find /Users/Me/MyFolder -name '*filename.tsv' -print0 -exec bash -c '/usr/bin/java -jar -Xmx2G /Volumes/Macintosh\ HD/Applications/mMyApp/MyApp.jar -s "," -e "." "$1"  > "$1-new.tsv"' {} \;

Além disso, o comando deve ser chamado usando bash -c 'command string' (certifique-se de escapar aspas simples)

    
por 09.06.2016 / 12:42