[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 11:27 / Filesize : 228 KB / Number-of Response : 986
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その8



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/


518 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 21:46:07 ]
sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'

519 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 08:58:50 ]
>>516 間違ってる?

520 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 19:17:11 ]
質問なんですが・・

#!/bin/sh -

tmpfile=/tmp/program.$$
cat "$1" | tr ' ' '\n' > tmpfile

while read word
do
grep ${word} "$2" | いろいろと処理・・・
done < tmpfile

てな感じのスクリプトなのですが、
第一引数のファイル中に、例えば -i と言うような語があると
grep がオプションと解釈するのか何なのか、直後に while ループが
終了してしまいます。
'${'"$word"'}' だと grep には ${word} として渡されてしまいます。

何とかシェルを騙して grep に '-i' として渡す方法は無いでしょうか?

(渡す前に条件判断して先頭文字が - なら sed などで先頭に \ を
付加すると言うのも行けそうな気はしますが、出来れば余計なIFとか
変数とか無しで行きたいものです)

521 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 19:35:35 ]
grep -e
grep -

522 名前:520 mailto:sage [2007/05/30(水) 19:53:07 ]
>>521

ありがとう。
シェルを騙さなくても grep の方で用意されていましたか、
良く考えりゃ当然ですね。

523 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 21:22:55 ]
オプション -- で、それ以降はオプションとは解釈しないってのは
結構な数のコマンドで使える。

524 名前:520 mailto:sage [2007/05/30(水) 23:07:09 ]
>>523

ですね。

これまで -- なんて、はぁ?って感じでしたけど、
実に有用性が高いですね。
勉強になります。

525 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 11:43:37 ]
質問
インターネットに接続できるか試すコマンドってありますか?

やりたいこと
インターネットに接続できたら echo "できます"
インターネットに接続できなかったら echo "できません"
としたいです。

526 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 11:59:13 ]
インターネットとLANの区別をしなくていいのかな?



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 を使う






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef