下面的作品沒有問題的Java執行命令行程序「發現」從終端返回錯誤
find testDir -type f -exec md5sum {} \;
哪裏testDir
是包含一些文件(例如文件1,文件2和文件3)的目錄。
不過,我得到使用如下的錯誤Java中
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("find testDir -type f -exec md5sum {} \\;");
的錯誤是
find: missing argument to `-exec'
我相信我正確地轉義字符。我嘗試了幾種不同的格式,但無法使其工作。
更新 @jtahlborn完美地回答了這個問題。但是現在命令已經稍微改變了,可以在計算md5sum之前對dir中的每個文件進行排序,如下所示(我已經接受了原始問題的優秀答案,所以如果他們能夠提供格式。爲了這個,我想盡組合,我能想到沒有成功按照以下答案)
「找到TESTDIR型的F -exec的md5sum {} + |。AWK {打印$ 1} |排序| 的md5sum ;」
新的更新
管道,你需要一個殼,所以我結束了這一點,偉大的工程,你仍然可以得到的輸出。
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"
});
您如何獲得反饋?一個[SSCCE](http://SSCCE.org)會很好。 –