以下は端末からの動作は問題ありません
find testDir -type f -exec md5sum {} \;
testDir
いくつかのファイルを含むディレクトリ (file1、file2、file3 など) はどこにありますか。
ただし、Javaで次を使用するとエラーが発生します
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("find testDir -type f -exec md5sum {} \\;");
エラーは
find: missing argument to `-exec'
文字を正しくエスケープしていると思います。いくつかの異なる形式を試しましたが、これを機能させることができません。
更新@jtahlborn は質問に完全に答えました。しかし、md5sum を計算する前にディレクトリ内の各ファイルをソートするようにコマンドが少し変更され、次のようになります (元の質問に対する優れた回答を既に受け入れているので、フォーマットを思い付くことができればビールを購入します)。このために. 以下の答えに従って考えられるすべての組み合わせを試しましたが、成功しませんでした.)
「testDir を検索 -type f -exec md5sum {} + | awk {print $1} | sort | 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"
});