正規表現パターンによる置換を使用して、md5sum 出力のすべてのスペースをタブに置き換え、通常の md5sum 出力を反転して(fingerprint<space>/path/to/file)
、/path/to/file を最初に出力し、md5 フィンガープリントを 2 番目に STDOUT に出力しようとしています。私はそれをかなりうまく機能させていますが、何らかの理由で、このサンプル出力でわかるように、すべてのスペースがタブに変換されているわけではありません (4 番目のアイテムの ps アイテムを参照)。
/bin/pidof 7b6aa27625786df26cd2511a6ccb8ec6
/bin/ping 120d994f6bd6e05e10c7aa4ffeb157b9
/bin/ping6 6578368ea1a280524ad5c944e8de825f
/bin/ps a68ff229e6c54ffa71d3de956395af5c
/bin/pwd a30c8ea470134ba60d9008ca5723c556
/bin/rbash 83f4aacf3157bfab413d009f48980e61
コード
#!/usr/bin/perl -w
foreach $arg (@ARGV) {
push (@md5, `md5sum $arg`);
}
foreach $entry (@md5) {
$entry =~ s/(^.*) +(.*$)/$2\t$1/;
print $entry . "\n";
}
a、b、c、d という名前の 4 つの空のテキスト ファイルを含むサンプル ディレクトリを作成し、perl スクリプトを実行したところ、問題なく動作しました。何を与える?
** テスト DIR で良好な出力*
host{user}114: ls
a b c d mymd5.pl
host{user}115: ./mymd5.pl *
a d41d8cd98f00b204e9800998ecf8427e
b d41d8cd98f00b204e9800998ecf8427e
c d41d8cd98f00b204e9800998ecf8427e
d d41d8cd98f00b204e9800998ecf8427e
mymd5.pl 719e2f8f878077ae3ef037369eb38e48
host{user}116: