Le seguenti opere dal terminale non è un problemaJava eseguire il programma da riga di comando 'find' restituisce l'errore
find testDir -type f -exec md5sum {} \;
Dove testDir
è una directory che contiene alcuni file (ad esempio file1, file2 e file3).
Tuttavia, ottengo un errore utilizzando il seguente in Java
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("find testDir -type f -exec md5sum {} \\;");
L'errore è
find: missing argument to `-exec'
Credo che sto scappando correttamente i caratteri. Ho provato diversi formati e non riesco a farlo funzionare.
UPDATE @jtahlborn ha risposto alla domanda perfettamente. Ma il comando ora è leggermente cambiato per ordinare ogni file nella cartella prima di calcolare md5sum ed è come segue (ho già accettato la risposta eccellente per la domanda originale quindi comprerò qualcuno una birra se riescono a trovare il formato . per questo ho provato tutte le combinazioni che posso pensare di seguire la risposta qui sotto senza successo)
"trovare testdir -type f exec md5sum {} + |. awk {print $ 1} | sorta | md5sum ;"
NUOVO AGGIORNAMENTO
per pipa, è necessario un guscio così ho finito con questo, che funziona alla grande e si può ancora ottenere l'output.
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"
});
Come si ottiene il feedback? Un [SSCCE] (http://SSCCE.org) andrebbe bene. –