Las siguientes obras de la terminal hay problemaJava ejecutar programa de línea de comandos 'hallazgo' devuelve el error
find testDir -type f -exec md5sum {} \;
Dónde testDir
es un directorio que contiene algunos archivos (por ejemplo archivo1, archivo2 y archivo3).
Sin embargo, me sale un error al usar el siguiente en Java
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("find testDir -type f -exec md5sum {} \\;");
El error es
find: missing argument to `-exec'
Creo que estoy escapando los caracteres correctamente. He probado varios formatos diferentes y no puedo hacer que esto funcione.
ACTUALIZACIÓN @jtahlborn respondió perfectamente a la pregunta. Pero el comando ahora ha cambiado ligeramente para ordenar cada archivo en el directorio antes de calcular el md5sum y es el siguiente (ya he aceptado la excelente respuesta para la pregunta original, así que le compraré una cerveza a alguien si se le ocurre el formato . para esto he intentado todas las combinaciones que se me ocurre después de la respuesta a continuación sin éxito)
"encontrar testdir type f -exec md5sum {} + |. awk {print $ 1} | tipo | md5sum ; "
NUEVA ACTUALIZACIÓN
Para tubos, necesita una concha, así que terminé con esto, que funciona muy bien y todavía se puede obtener la salida.
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(new String[]
{
"sh", "-l", "-c", "find " + directory.getPath() + " -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum"
});
¿Cómo recibir el voto? A [SSCCE] (http://SSCCE.org) estaría bien. –