1 名前:名無しさん@お腹いっぱい。 [2007/02/15(木) 14:28:44 ] シェルスクリプトの総合スレです。 スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずは注意点、リンク、地鎮祭など(>>1-6 くらい)をご覧ください。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashなので特に注意。 ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルスクリプトのことをシェルってゆーな ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 前スレ シェルスクリプト総合 その7 pc10.2ch.net/test/read.cgi/unix/1157601611/
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 12:05:24 ] 多分、この程度の精度でOKなんだろ。 if ping -c 1 www.yahoo.com >/dev/null 2>&1; then echo "出来ます" else echo "出来ません" fi
528 名前:525 mailto:sage [2007/06/03(日) 03:05:39 ] >>562 >>527 ありがとうございます できればヤフーなどの特定のサイトに依存せず 確実にインターネットに繋がるかどうか判断したいです。 もし無理なら特定のサイトでも構いませんが こういう場合通例としてyahoo.comを使うのが適切でしょうか?
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 07:09:14 ] 接続できていると分かったら、どこかと通信するんでしょ? その通信相手にすればいいよ。
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 07:21:06 ] >>528 何が目的なん?
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 08:59:25 ] その通信相手がICMPブロックしてるかも知れないから、ブロックしてない www.yahoo.comとかwww.google.comとか使えばいい。
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 11:01:00 ] >>528 君のほうから、どことつながったらインターネットに繋がっていると言えるかの 判断基準を出してくれないと先に進めないと思うよ。
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 12:04:41 ] 相手もそうだがプロトコルもな。 ファイアウォールの具合でICMP通らないかもしらんし。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 23:19:33 ] まぁ、スレ違いだな。
535 名前:名無しさん@お腹いっぱい。 [2007/06/04(月) 07:59:35 ] >>527 >if ping -c 1 www.yahoo.com >/dev/null 2>&1; then 関係ないが、この 2>&1 エラー対策でつか?
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 14:12:29 ] 遅レスだが、 tail -r ファイル名| tail +20 | tail -r でもいけた(tailばっかりでカッコ悪いか)
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:46:12 ] >>535 終了ステータスだけとれりゃいいので、エラーメッセージとか捨てる。
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:50:18 ] それを捨てるなんて、とんでもない!
539 名前:ウサチャソ mailto:sage [2007/06/04(月) 23:49:23 ] きのうはおたのしみでしたね。 ウホッ
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 23:51:56 ] *「おお しんでしまうとは なにごとだ!」 *「アッー!」
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 06:33:28 ] vmstat 1 の結果の左側に`date +%H:%M:%S`(時分秒)を付けて流して表示させようとしています。 以前、gawkでstrftimeを利用して同じ事をしたのですが、今回使ってるサーバのawkは gawkでない為に別の方法が必要です。 どうもウマイ方法が思いつきませんで・・・ご教示お願いします。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 08:54:12 ] Perlあるなら vmstat 1 | perl -MPOSIX -pe 'BEGIN{$|=1} print strftime q{%H:%M:%S }, localtime'
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 08:59:20 ] これは重そうだけど vmstat 1 | while read line; do echo `date +%H:%M:%S` $line; done
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 20:13:14 ] >>539-540 DQ I ?
545 名前:541 mailto:sage [2007/06/05(火) 22:31:39 ] >>542 HP-UX10.20だったのですがperlが入っていませんでした(汗 でも、これを機会にperlもちょっとづつ勉強したいと思います。どもでした。 >>543 readがそんな使い方できるとは知りませんでした。 おかげさまでばっちり動きました。ありがとうございます。
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 23:39:38 ] bash.infoの説明だと echo hoge | read v で echo $V →hoge になるように読める で、できないってことはわかったんだけど結局readはどう使うんですか なんでwhile中だとうまく動くんでしょう
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 00:17:57 ] サブシェルが起動するから。 read で代入する変数はサブシェルのものだから、親シェルに戻ると忘れる。 while でなくても、下のような書き方をすれば {...} の中にかぎり有効。 echo hoge | { read v echo $v } あと、ksh はふつーに可能だったような記憶がうっすらとあるが自信ない。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 15:14:41 ] 質問 シェルスクリプトを、windowsでCD-Rに焼き、linuxで実行すると 改行がコマンドとして認識され、command not foundとなってしまいます。 普通に改行を改行として認識させることはできないのでしょうか?
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 16:33:41 ] よくわからんが改行コードの問題? 改行コードをLFで保存できるテキストエディタ使えよ
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 16:52:46 ] >>549 ありがとうとざいます LFで保存したところ大丈夫でした。 ただし1行目だけはなぜかcommand not foundとなってしまう。。
551 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 20:15:14 ] log=20070101.log $logを 2007-01-01 という風に、[西暦]-[月]-[日]な形にしたいのですが、どすればよいでしょうか? どなたか、お力をお貸し下さいませ。 .log と取って、4桁、2桁、2桁ごとに「-」を挟む。というのはわかるのですが 方法や何のコマンド使ってよいものやら見当もつきません。お願いします!
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 20:26:09 ] echo $log | sed 's/\(....\)\(..\)\(..\).*/\1-\2-\3/'
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 20:30:18 ] >>552 ありがとうございました!出来ました! sedは使えるつもりでいたんですが、まだまだの若輩者でしたorz こんなに早く答えて頂いて本当に助かりました。
554 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 23:42:52 ] じぇっとすとりーーーむ〜
555 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 23:42:59 ] シェルが何かは分かったのですが、シェルスクリプトが良く分かりません… 専門用語を交えないで言うと、どういったものなのでしょうか?
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 23:44:51 ] シェルが何かどうわかったか、専門用語を交えずに説明してからだ
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/07(木) 00:11:41 ] レストランのメニューがシェル。コース料理がシェルスクリプト。 大分違うな…
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/07(木) 00:35:32 ] e-words.jp/w/E382B7E382A7E383ABE382B9E382AFE383AAE38397E38388.html 専門的な概念なのに専門用語使うなというのは無理な話。
559 名前:名無しさん@お腹いっぱい。 [2007/06/07(木) 02:08:21 ] >>557 その説明で開眼しました!! 今ならどんなプログラムも書けそうです!! (^ω^)
560 名前:名無しさん@お腹いっぱい。 [2007/06/08(金) 00:50:30 ] if [ -e foo ] ; then echo "foo exists." else echo "foo does not exist." fi これを Solaris 8の bash, cygwinの sh, bashで実行するとOK。 でも Solaris 8の shで実行した時だけ test: argument expected と出てしまいます。どうにも分かりません。助けて下さい…
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 03:13:50 ] Solarisなどの旧式shのtestコマンドには-eというものはない。 これは外部コマンドのtestも同様。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 06:27:46 ] >>561 ダウト。 Solarisの外部コマンド版のtestの実体はkshスクリプトだから、 Solarisでも外部コマンド版のtestには -eオプションがある。 ただし、純正Bourneには -eがないので、使わないこと推奨なのは同意。 [ -f foo ] あたりで代用だな。
563 名前:名無しさん@お腹いっぱい。 [2007/06/08(金) 08:29:58 ] grepコマンドで検索した行の前後三行を出力するコマンドってないすか? たとえば、以下のようなファイルがある。 ---------------------------- aaa bbb ccc ddd eee fff ggg ---------------------------- grepコマンドをつかって、 $ grep ddd -a 333 とすると bbb ccc ddd eee fff と表示されるようなやつよ。
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 08:45:56 ] >>563 -A とか -B とかない?
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 10:35:48 ] >>563 普通にgrepだけで行けるぞ grep -A 3 -B 3 'ddd' filename
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 10:44:10 ] 普通は-Aとか-Bなんてない。
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:01:46 ] 何が「普通」かなんて人それぞれでしょ。 -A がある grep とない grep がある。 それだけ。
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:02:54 ] 目的達成できるなら、それでいいじゃん
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:03:45 ] grep -n して sedで : より前だけ取り出して awkにくべて前後の必要な行番号を全部計算して sort -nuして sedでsedのコマンドに成形しなおして sedで抽出。 てゆうか、grepにこだわらずにawk1個の方がめちゃ楽そう。
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:04:44 ] >>569 awkだけだとどうなるの?
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:29:37 ] FreeBSDは変にsed使うよりawk1本に絞った方が軽い。
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:43:53 ] 複数行のテキスト整形には弱い 普通は、prelとかrubyを使う まあ、perlとかruby使えないから聞いてるんだろうけど
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:52:15 ] >>572 sedやgrepでどうしようかななんて考えてる時間が無駄だよな perl覚えちゃたほうがいいのにね、これを機会に
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:55:16 ] これを機会にGNU grep入れちゃえ。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:00:44 ] パタン行より前の行も表示しないといけないのでawk一本だとちょっと手間でしょ。 perlやrubyを使ってもそれは同じじゃないかな。 sed+awkなら sed -e "$(awk '/pattern/{for (i=-2;i<=2;i++)if(i+NR>=0)print (i+NR) "{p;d;}"}' file|sort -nu)"';d' file zshでしか試してないのでクォート回りはshだと違うかも知れんが、 だいたいこんな感じで。
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:19:38 ] GNUは偉大だな、改めて思った
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:26:01 ] 当たり前じゃね? だってGNU拡張は、ユーザが便利だと思うものを実装して 拡張していったんだから きっと、>>563 みたいなことを、数年前にも同じといってる人が 現れてんだよw それで拡張されてる
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:40:49 ] GNU sed awk grep を使いましょうね
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 15:54:55 ] 俺はgawk派
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:04:21 ] ガウォーク
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:14:46 ] GNU is Not UNIX の意味がやっとわかったようでなにより
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:21:47 ] んでけっきょく >>563 はどうしたの?
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:25:28 ] GNU教に入信する準備をしてます
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:29:28 ] しこしこ、書いてんじゃね
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 17:38:00 ] mac でターミナルで操作しているのですが、safariでgoogleなどのページで キーワードを打ち込んで検索させたりはできないものなんでしょうか? 初心者なんで仕組みなどわかりませんので構造上できないものなら教えてください
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 17:49:58 ] >>585 pc11.2ch.net/mac/
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 21:02:22 ] シェルスクリプトとGUIアプリの連携ってか?
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 22:41:28 ] 質問です! ---hoge.txt--- aaa bbb ccc これを ---hoge.txt--- aaa ccc こうしたい。 sed -i "s/bbb//g" hoge.txtだと ---hoge.txt aaa ccc こうなってしまう・・・
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 22:49:06 ] sed -i -e '/bbb/d'
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 23:03:06 ] >>589 ありがとうございます!
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 23:37:42 ] GNU sedは正規表現のエスケープまわりが腐ってるんだよなあ それに、わざわざBourne Shellに縛ったスレなのに、GNU拡張に依存するのもどうかと思う ポータビリティも勘案すると、perl使った方がいい
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 10:18:52 ] GNU grepの-oは便利
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 11:53:54 ] >>592 モレも-Po がマジ便利だと思う。
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 12:23:49 ] それを言ったらshよりzshのが便利だ
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 12:49:24 ] そうだよ
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 14:42:53 ] FreeBSDよりWIndowsのが便利だ
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 14:54:08 ] 当たり前だろ
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 15:01:51 ] perlの書法がもっと自由度低かったら決定版たったのだが。 お行儀悪く書けてしまうのが悩みの種
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 01:08:21 ] お行儀良く書きたいならRubyなりPythonなりへ行けば良い お行儀悪く書いても心が痛まないのがPerlの長所
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 01:10:39 ] use strict; するんだからそれほどひどいコードにはならないような
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 22:37:24 ] どーせワンライナーか数行でやれるようなのしかPerlで書かないから どうでもいい
602 名前:名無しさん@お腹いっぱい。 [2007/06/15(金) 02:31:42 ] cshを勉強し始めたものです。 研究室で使うためです。 C言語もほとんど知らないので、取っ付きにくく、苦労してます。 今よく分からないのは、シェル変数と環境変数です。 普通に話に出てくるのですが、変数だとは理解してますが、違いが分かりません… どなたか教えて頂けませんか?
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/15(金) 02:41:57 ] シェル変数はシェルが使う 環境変数は(主に)呼び出されたコマンドが使う それはいいとして、なんでcshかちゃんと確認しろ csh使う必然性がなければ、shにしとけ
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/15(金) 03:12:03 ] 環境変数は子プロセスに引き継がれる。 シェル変数はそのシェルのみが使い、 子プロセスに引き継がれない。
605 名前:602 [2007/06/16(土) 01:09:53 ] レス有り難うございます。 なぜcshなのかと言うと、 今研究室で使われてるのがcshだとしか… Cで書かれたソースプログラムをcshに渡して、 結果を他のプログラムに渡して…… って感じらしいです。 まだ学部なので、難しいプログラムは書けず、 既成のプログラムの値を変えて走らせたりするようです。 最近の課題が、あるcshの中身を渡され、理解してくるものでしたが、 プログラムの知識が無い自分にはさっぱりというわけです…
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 01:58:47 ] そんなに何種類もcshがあるのか?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 03:31:44 ] cshで書かれたシェルスクリプトってとこじゃないか?
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 15:17:35 ] いや、cshの中身だぞ?
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 15:47:46 ] とりあえず>>605 よ、 cshの中身というのはcshスクリプトという意味か?
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 16:11:27 ] こらこら、cshの話はもう終り。禁止。
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 16:53:10 ] GNU grepの話をしてもいいなら、cshも良くないか
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 18:01:05 ] 良くない。
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 18:02:26 ] シェルスクリプトのスレでシェルのソースコードの話かぁ……
614 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 19:35:05 ] 質問です。 ファイルの内容が同じものをリストアップする目的で、 対象ファイルのmd5sumを計算したいと考えています。 ただし、ファイルが大きいと時間がかかってしまうので、まずはファイル頭の 512バイトだけでmd5sumしたいです。以下のようなものを書いたのですが、 ファイル数が多い(1000とか)とプロセスの起動がボトルネックになってしまう ようで、遅いです。 while read -r filename do dd if="${filename}" ibs=512 count=1 2> /dev/null | md5sum >> output done < ${tempfile_prefix}2_filesize_onajiyatu md5sumに先頭から512バイトだけで計算しろと指示することはできますか? もしくは何かいい案ありますでしょうか?
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:45:20 ] えろ画の整理スクリプトかよ
616 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 19:49:09 ] 違います。 エロ動画です。 だからでかいのです。
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:52:32 ] >>614 プロセス起動がネックならperlとかpythonとかrubyとか好きなのでやれ。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:53:08 ] >>614 perl を使う
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:02:27 ] まずはファイルサイズで比較すればいいのに
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:11:47 ] 粗く分けるのにmd5なんか使わんでも。 >>619 の通りファイルサイズが手軽だし、もし同じサイズで内容が違うものが 沢山ならファイル中の適当なところをhexdumpでもいいんじゃないの。
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:37:43 ] 横から済まぬが >>619 ,620 >> ${tempfile_prefix}2_filesize_onajiyatu って書いてあるから、そもそも同じサイズ限定ではないのか?
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:40:36 ] 同じファイルサイズのものだけでも1000ファイルもあるって、 結構集めまくったね、絵炉動画をw
623 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 21:03:28 ] >617,618 perlか・・・ついに手を出すときが来たか >619,621 失礼しました。サイズ比較をあらかじめこんなのでやってます。 ls -l "$@" | sed 's/ \+/ /g' | cut -d ' ' -f 5,8 > ${tempfile_prefix}1_filesize_all awk '{ if(a[$1,0]==0){a[$1,0]=1;a[$1,1]=$0;} else{if(a[$1,0]==1){print a[$1,1];} a[$1,0]++;print $0;} }' \ ${tempfile_prefix}1_filesize_all > ${tempfile_prefix}2_filesize_onajiyatu >620 ためしに512byteのgomi.txtを作ってみて、以下試しました。 %time (for i in `seq 1 1000`; do cat gomi.txt > /dev/null 2>&1 ; done;) -> 1.486sec %time (for i in `seq 1 1000`; do md5sum gomi.txt > /dev/null 2>&1 ; done;) -> 1.510sec これくらいのサイズだと処理内容はあまり影響なさそうです。 md5sumの方が比較しやすかったのです。 >622 いやいや、得ろ動画とか1000個とか例えばの話ですよw
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 00:32:06 ] >>614 まずは、ファイルサイズではじいたら?
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 00:34:24 ] すまん。@bitwarpなもんで、更新漏れだった。 忘れてくれ
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 03:14:21 ] xargsでもつかえば?
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 04:00:08 ] 気が向いたんでやってみた $ time (for f in tmp/*; do dd if=$f bs=512 count=1 2>/dev/null | md5sum; done) 065d30715dcffa21596406373a9124ac - ...中略... ed4cf7b8f209f9ce630b5e76219357ae - (; for f in Desktop/*(.); do; dd if=$f bs=512 count=1 2> /dev/null | md5sum; ) 0.09s user 0.38s system 49% cpu 0.960 total $ time perl -M'Digest::MD5(md5_hex)' -e 'for (@ARGV) { open F,"<$_"; read F,$a,512; print md5_hex($a),"¥n" }' tmp/* 065d30715dcffa21596406373a9124ac ...中略... ed4cf7b8f209f9ce630b5e76219357ae perl -M'Digest::MD5(md5_hex)' -e Desktop/*(.) 0.02s user 0.02s system 18% cpu 0.193 total