4

この問題を例を挙げて説明します。2 つの列を持つリストを生成したいとしましょう。列 1 にはファイル名が含まれ、列 2 にはそのファイルの md5 サムが含まれます。

これは、次のスクリプトを使用して実行できます。

for FILE in `ls -p | grep -v "/"`;
do
    printf "%s %s\n" "$FILE" `md5 -q "$FILE"`;
done;

これは、パイプを使用して単一の行で実行できますか? のさまざまな組み合わせを試してみましたがsed、何かが足りないと思います。これが私の試みの1つです:xargsprintf

ls -p | grep -v "/" | xargs -I FILE printf "%s %s\n" FILE `md5 -q FILE`

その試みではFILE、バッククォートの内側は置換されていませんが、これはそれほど驚くべきことではありません。

これは、複数行のスクリプトを使用する必要があるようなものですか? ロジックや制御フローがないため、ワンライナーが可能であると感じており、ツールを適切に使用していないか、適切なツールを見つけていない可能性があります。

タイトルについてお詫び申し上げます。この質問を何と呼ぶべきかわかりません。

4

4 に答える 4