1

複数のディレクトリから 1 つのファイルに対して shasum を実行すると、期待どおりの結果が得られ、最終的には次のようになります。

shasum 2010/Whitmore/The\ Astrophysical\ Journal\ 2010\ Whitmore.pdf
5da84767c2301f29ed3b7db7542167150fe63b8b  2010/Whitmore/The Astrophysical Journal 2010 Whitmore.pdf

同じディレクトリから find を実行すると、問題なくファイルが一覧表示されます。

find 2010/Whitmore/* | xargs -0
2010/Whitmore/The Astrophysical Journal 2010 Whitmore.pdf

私は、ファイル名とともに find (たくさんあります) によって見つかった各ファイルの個々の shasum を返す bash スクリプト (または 1 行だけ) を作成しようとしています。ファイル名を shasum にパイプすることは、私が試したどの組み合わせでも機能しません。

問題はファイル名のスペースにあると思いますが、Google で検索した後、多くの find/xargs/ls の組み合わせ (および -print0 フラグを含む他の人にとってはうまくいくと思われるもののさまざまな組み合わせ) を試してみましたが、まだ理解できません。これらのディレクトリの下にある各ファイルに対して shasum を実行する方法を教えてください。

この結果を取得するまったく異なる方法がある場合に備えて、必要な出力の例 (Whitmore の下に 2 つのファイルがあると仮定):

find 2010/Whitmore/* | xargs -0 | shasum
5da84767c2301f29ed3b7db7542167150fe63b8b  2010/Whitmore/The Astrophysical Journal 2010 Whitmore.pdf
4d2b0a6da00473133b4617d67d9249da3d05cc19  2010/Whitmore/arXiv 2010 Whitmore.pdf

Mac OSX 10.6 を使用しています

4

5 に答える 5

3

-execのオプションを使ってみてはどうfindですか?

find 2010/Whitmore/* -exec shasum {} \;

于 2011-03-18T18:33:07.000 に答える
1

ディスクが高速な場合は、いくつかを並行して実行することをお勧めします。

find 2010/Whitmore/* -type f | parallel shasum

GNU Parallel の詳細については、紹介ビデオをご覧ください (天体物理学者であれば、喜んでいただけるはずです): http://www.youtube.com/watch?v=OpaiGYxkSuQ

于 2011-03-20T21:24:05.507 に答える
0

しますか

find -type f | sed 's/./\\&/g' | xargs shasum

仕事?

于 2011-03-18T18:26:24.027 に答える
0

ファイル名にスペース文字が含まれる問題を回避するには、ファイル区切りとして「\0」を使用します。

find 2010/Whitmore/ -type f -print0 | xargs -0 -l -P 2 shasum

への-P引数は、xargs実行する同時プロセスの数を指定します。

于 2012-08-15T02:29:45.443 に答える