シェルスクリプト総合@LINUX Part3
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
2007/07/10(火) 23:17:13ID:qGthZdMEまあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。
初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。
perlやらPythonやらの話が混ざっても良いんでない?
【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc11.2ch.net/test/read.cgi/linux/1154578200/
http://pc8.2ch.net/test/read.cgi/linux/1121994321/
>>2-5あたりに色々と。
0753login:Penguin
2008/03/01(土) 10:33:04ID:t3ZBWfKhecho {1..$x}
してみようぜ。
0754751
2008/03/01(土) 17:46:18ID:IgLZSOLf{1..29}
・・・ってことは、{1..29}そのものを探す=「No such file or directory」
ってことでしょうか?
ということは、pre_month_daysの文だけfor文で回して、
$temp_textにためていってから、解析プログラムに引き渡すと今思ったのですが、
この$temp_textというのは、シェルスクリプトが終了したときには、
消えてなくなるのでしょうか?どこかに残っているものなのでしょうか?
$temp_textだと、120万行ぐらいあるので、どこかに残っていれば圧迫しかねませんし・・・。
0755751
2008/03/01(土) 19:12:07ID:IgLZSOLfbashのfor文ってわけわかりません、( )とか{ }とか使うと思っていたのですが・・・。
zcat /var/log/maillog.$x.gz >> $temp
を繰り返して、
引き渡しプログラム $tempとしたいのですが、
for文(他のやり方もある?)をどう使えばいいのでしょうか?
0756login:Penguin
2008/03/01(土) 19:37:33ID:t3ZBWfKh並べた要素1つ1つに対してループするというもの。
for x in 1 2 3 4 5; do
echo $x
done
とかな。
1から先月末日までの日の並びを作るために、Linuxならおそらくseqが使える。
# BSDだとjot
for $x in `seq $pre_month_days`; do
zcat ...$x...
done
とか。
0757login:Penguin
2008/03/01(土) 20:11:24ID:quX+uZMvfor (( i = 0; i < 10; i++ )); do
echo $i
done
みたいな C っぽい for 文も使える。
0758751
2008/03/01(土) 20:32:55ID:IgLZSOLfseqを使ってもエラーが出るので、
Cっぽくやってみました。
aaa.1.txt
aaa.2.txt
aaa.3.txt
を用意して、
------------------
#!/bin/bash
x=3
temp=""
for (( i=1 ; i < $x+1; i++ )); do
cat aaa.$i.txt >> $temp
done
cat $temp
-------------------
./test2.sh: line 5: $temp: ambiguous redirect
./test2.sh: line 5: $temp: ambiguous redirect
./test2.sh: line 5: $temp: ambiguous redirect
マズー(;´Д`)
am・big・u・ous[ mbjus ]
[形]
1 2通り(以上)の解釈を許す
2 (正体の)あいまいな;紛らわしい;はっきりしない, ぼんやりした, もうろうとした, おぼろげな
0759login:Penguin
2008/03/01(土) 20:49:48ID:pGgAUYn5書き込み先がないじゃんか。
temp=nulpo.txt
とか書き込み先がないと。
0760759
2008/03/01(土) 21:51:32ID:IgLZSOLf1ヶ月のメールログ1.4GBを食わせることができました。
ありがとうございます。
0761login:Penguin
2008/03/01(土) 22:39:09ID:pGgAUYn5最初の>751をよく見てなかったんだけど、maillog.*がそんなに多くない(毎月かならず1〜29になっている、てので)なら
for file in `ls /var/log/maillog.*`
do
zcat $file | 処理プログラム
done
でいいのでは。
それと焦って名前欄間違えないように〜w
0762760
2008/03/01(土) 23:08:45ID:IgLZSOLflogrotateはdailyの120でcompressなんです。
で、月次解析なんで、
その日の前日の「日にち」を取って、
zcatしなくちゃならなかったんです。
でも、これで月次の解析ができます〜
0763login:Penguin
2008/03/02(日) 03:30:36ID:b0TlSvfI0764login:Penguin
2008/03/02(日) 22:17:28ID:eyDRtewQファイルに落とさない方法もあるぞ
引き渡し先がワンパス処理で無い場合は失敗する可能性
があるのでおすすめ出来ないが...
#!/bin/sh
pre_month_days=`date -d '1 days ago' +%d`
( for i in `seq 1 $pre_month_days` ; do
printf "/var/log/maillog.${i} "
done ) | xargs echo zcat | 引き渡しプログラム
exit $?
##
0765login:Penguin
2008/03/03(月) 09:55:39ID:4ARrqAXS0766login:Penguin
2008/03/03(月) 13:44:09ID:WtSCj+5Ueval zcat /var/log/maillog.{1..$pre_month_days}.gz | 引き渡し先プログラム
0767login:Penguin
2008/03/03(月) 23:36:12ID:5ghxiELA簡単なApacheログ解析&集計用スクリプト組みたいんだけどシェルスクリプトだとパフォーマンス悪いかな?
RubyやPythonは使えないんで、bash系シェルスクリプトかPerlでやってみたいんですが
ちなみにログフォーマットはこんな感じ
mxxxxxx.dynamic.ppp.asahi-net.or.jp - - [27/Feb/2008:15:46:04 +0900] "GET / HTTP/1.1" 200 101323 "http://hoge.piyo/" "Opera/9.25 (X11; Linux i686; U; ja)"
1リクエストに対して1行記録され、日付毎にファイルがある。(ファイル名の例:access_log_20080227)
465日分で容量2.5GB超とちょっと多いです。
やりたいことは項目別のランキングをテキスト出力だから、スクリプト自体は簡単そう
0768login:Penguin
2008/03/03(月) 23:43:14ID:Zrc2Vdg00769login:Penguin
2008/03/03(月) 23:46:01ID:5ghxiELA実はそんな気がしてた
ありがとう('`)〜♪
0770login:Penguin
2008/03/04(火) 00:34:34ID:61UoHuE32分ちょいでこれだけ解析できるのかー
ああでも肝心なRefererランキングが出てないわ
Analogスレは4ヶ月近く誰も居ないみたいだしドウシタモンダカー
0771login:Penguin
2008/03/04(火) 09:48:48ID:kUaxbjJjファイルに特定の文字列が記載されていたら処理を分岐させるというシェルを書きたいと思っているのですがなかなか上手くいってくれません
何かいい方法がありましたら教えていただけないでしょうか
やりたい事はファイル内にHTMLという文字列が入っていたらAの処理 入っていなかったらデフォルトの処理をしたいと考えたので
下記のようにしてみました
TMP=`cat $YEAR$MONTH$DAY.csv |grep HTML`;
echo $TMP
case "$TMP" in
HTML)echo "HTML file"
;;
*) echo "##################"
esac
0772login:Penguin
2008/03/04(火) 09:54:01ID:oWYbuV9hif grep HTML "$YEAR$MONTH$DAY.csv" >/dev/null; then
echo "HTML file"
else
echo "##################"
fi
0773login:Penguin
2008/03/04(火) 14:33:52ID:kUaxbjJjありがとうございます
教えていただいた通りにやったら問題なくできました
なぜcat|grepのときは上手くできなくて
grepの時は問題なくできるのかがちょっと分からないのですが
いろいろ調べてみようと思います
0774login:Penguin
2008/03/04(火) 21:04:44ID:rsD9V5Zj0775login:Penguin
2008/03/04(火) 23:06:20ID:VrfR3qUeやだよ
0776login:Penguin
2008/03/05(水) 00:05:43ID:EV9xTscM0778login:Penguin
2008/03/10(月) 18:08:47ID:qsIz6iXzその結果、グラフがepsファイルとして作成されるのですが、Windowsにもってくるとフォント関係でエラーが生じてしまいます。
なのでLinuxでフォントをアウトライン化しようと思い「eps2eps」というコマンド(シェルスクリプト?)を用いて
epsファイルのフォントをアウトライン化しました。
しかし、そうするとbounding boxがおかしくなってしまいます。
ですので元のepsをテキストエディタで開き、bounding boxの項目をコピペして対応しています。
それでようやく本題なんですがw
上のような作業を、複数のファイルに対して一括で行いたいのです。
for file in *.eps
do
eps2eps $file ${file%eps}2
done
のようなシェルスクリプトを使えば一括でアウトライン化epsができると思うのですが
さらに、インプットファイルをテキストエディタで開きbounding boxの項目をコピー
アウトプットファイルにbounding boxの項目を貼り付け
というような機能を持たせることはできるのでしょうか?
0779login:Penguin
2008/03/10(月) 19:47:47ID:PtxOKuxD0780login:Penguin
2008/03/11(火) 02:26:04ID:3Mwu+R1Sスクリプトに慣れた人ならすぐに作れる。
0781login:Penguin
2008/03/12(水) 23:51:51ID:wAPdko8t?
0782login:Penguin
2008/03/13(木) 22:58:09ID:A7XLS93G!
0783login:Penguin
2008/03/13(木) 23:17:56ID:SoJCaJfU0784login:Penguin
2008/03/14(金) 00:22:41ID:XhBWUHl10785login:Penguin
2008/03/18(火) 03:16:13ID:TPZ/j5Uw0786login:Penguin
2008/03/20(木) 22:15:42ID:N/tKbDY70787login:Penguin
2008/03/21(金) 00:14:20ID:jeNVffRp$ echo hoge=1
hoge=1
$ echo x"$hoge"x
xx
bash 2.05b@debian ではできないぞ。
環境を教えてくれ。
0788login:Penguin
2008/03/21(金) 01:11:50ID:3ULYcj2H0789login:Penguin
2008/03/21(金) 01:53:30ID:Mk2nPfge>>537 最近はGUIの環境もシェルと呼んだりするらしいしね.
>ところで,シェルスクリプトをシェルと略す感覚が信じられない
>.せめてスクリプトのほうを残すべきじゃないのか,意味的に…
javascriptをjavaって呼ぶ奴おおいし、むきになんなよ
ちっせーな、何度も何度も
0790login:Penguin
2008/03/21(金) 03:00:16ID:tzWxNirHjavascriptとjavaだって別物じゃねーか
まったく別の意味にとられる表現は避けるべきだろ。
0791login:Penguin
2008/03/21(金) 03:26:20ID:yp4cACqr経験者を求めていた筈なので確認をとったら速攻で別案件に回されたけど。
(だれがどこでまちがったのかはしらない。たぶん、えいぎょうのアレがマタやらかしたんだろうけど)
0792login:Penguin
2008/03/21(金) 18:28:30ID:dmCthI0s無能丸出しだな。
0793login:Penguin
2008/03/22(土) 00:13:19ID:/5OR7tiw0794login:Penguin
2008/03/22(土) 06:15:29ID:EkMxwp6R頭の構造が粗雑なんだろうね。
しかし無能とは決めつけられないよ。土方としては有能かも知れないじゃないか。
0795login:Penguin
2008/03/22(土) 13:14:51ID:I+OQFn9y井の中の蛙、大海を知らず。
0796login:Penguin
2008/03/22(土) 14:00:07ID:4xBJlBA70797login:Penguin
2008/03/22(土) 14:23:40ID:79XeAASw「この開発にはあれが必要だな」
「そうですね、あれも必要です」
「あれのほうはどうだ」
「あれはあれ以外のあれでやりましょう」
「あれはあれだったからな」
募集要件にはエスパー希望と書けば何も問題ない。
0798login:Penguin
2008/03/22(土) 14:25:08ID:ldkQa/0Vjavascriptをjavaと呼んじゃうおばちゃん、ねーちゃんだってざらにいるよ。
どっちかというと>>789のほが常識的な気がす
0799login:Penguin
2008/03/22(土) 15:16:06ID:OrPubXKDperlスクリプトをPerlと呼んだりPerlでやると言ったり
awkスクリプトをawkと読んだりawkでやると言ったり
それと同じでは
0800login:Penguin
2008/03/22(土) 16:27:56ID:5bvfNtQw0801login:Penguin
2008/03/22(土) 16:38:49ID:ldkQa/0V(>>537,>>539はこれにつっこんでいる)
OSのカーネルに対する、(コマンド)インターフェイス外殻(カーネルの外層を覆う殻の概念)を
現在はCUI/GUIの別を問わずにシェルと呼んでる。このうちGUIの場合はグラフィカルシェルとか
CUIの場合はコマンドラインインタプリタとか呼ぶのだけど、このコマンドラインインタプリタを
Linuxを含めたUNIX系OSでは単にシェルと呼ぶ慣習がある。昔UNIXにはGUIなんて無かったらね、
シェルといったらコマンドラインインタプリタのことだ、ということに定着していたわけね。
いわゆるsh, bash, csh, tcshのshがシェルだ罠。
シェルスクリプトの略がシェルじゃなくて、シェルで動くスクリプトがシェルスクリプトなの。
順番が逆なのよ。
awk/perlもawk(言語)/perl(言語)のスクリプトがawk/perlスクリプトなのであって
awk/perlスクリプトの略がawk/perlなんじゃないよ。
まぁどうでもいいけどな。
以上を踏まえてあえて言えば
たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、
細かいこと言えばGUIだってグラフィカルシェルなのだ(>>539)が
あんま細かいことをいうとバカみたいだ。つーか狭量に見える。
というわけで>>789のほが同意できる。聞き上手って言葉があるじゃない?
0802login:Penguin
2008/03/22(土) 17:33:00ID:/5OR7tiwいいだけじゃねーかと建設的な提案をしたのに、他の軽量プログラミング言語
までもちだし、略した言葉を受け取った人間の能力の問題じゃね?
となるこのスレの流れに、思わず小岩井ミルクコーヒーを噴いた。
>>791の様に読解および対話能力が備わってないと、悲惨な状況のド真中に
パラシュート降下させられる奴がわんさかでそうだ。単語の略し方の問題で。
0803login:Penguin
2008/03/22(土) 18:27:12ID:g5kThUF3>>800の言う通り、
シェル・スクリプトをシェルと呼んでも文脈から意味は通じるが、
javascriptをjavaと呼んでしまうと別のものを指してしまう。
混同するな。
0804login:Penguin
2008/03/22(土) 19:12:09ID://sUM7750805login:Penguin
2008/03/22(土) 19:20:26ID:ldkQa/0V思い浮かべて欲しい世の人々は道の傍らでJavaとJavascriptの違いを
切々と説く君たちに聖者が来れり、天国は来れりと歓喜することであろう。
が、まぁ少なくとも営業の彼と経理の彼女、はす向かいの鈴木さんに
今後一切飲みに誘われなくなるのは間違いと思うけどね。
0806login:Penguin
2008/03/22(土) 19:26:48ID://sUM7750807login:Penguin
2008/03/22(土) 19:39:22ID:pZoAGsoS0808login:Penguin
2008/03/22(土) 19:39:41ID:d90KTFFKさっさと氏ね
0809login:Penguin
2008/03/22(土) 20:07:27ID:/5OR7tiwAとBは異なるという説明し、その異なりを無視して同一のもととして扱うと
余計なコストが発生するから、次からはきちんと区別してくれという依頼が
出来ない風土、もしくは、意思決定にかかわる情報を扱うやつが説明しても、
その異なりを理解できないなら、そんな会社つぶれるだろ常考。
また、痛いレスみてJavaとJavascriptも区別して話す新入りが入ってきたら、
それこそ大迷惑だ。
>>791のえいぎょうのアレは赤っ恥ですめばいいけど。発注元からみると、
大丈夫かこの営業さんと思ったに違いない。
という燃料を補給してみた。
0810login:Penguin
2008/03/22(土) 20:29:32ID:ldkQa/0V0811login:Penguin
2008/03/22(土) 21:23:56ID:I+OQFn9yつまり春奈と偽春奈で仕事をすると。
0812login:Penguin
2008/03/22(土) 21:25:26ID:ldkQa/0Vすまんかった。そういう意味じゃなくて、今時、派遣ぽい職場の人は技術職まで
そんな感じになってきて大変だと思う。漏れにも似たような経験あるからさ、
マジ、ガンがって欲しいと思ってる。
言われたのと行った先で条件が違うなんてのはちょくちょくあって
アホな会社にも言えなくて当人が泣きをみてしまうつーのは辛いよな。
やる気ならなんとかユニオンとかそっちに話をもってくしかないわけだが
自分の身を守るのが第一かと思うよ。
まぁここでそんなこと言っててもしょうがないわけで、そういう言い方になった。
0813login:Penguin
2008/03/24(月) 00:53:04ID:W0JgcRQdプロな人はもっと簡単な方法を知ってるんじゃないかな的なお題。
ひょっとして歴代のスレで既出の可能性ありだけど許して。
ディレクトリに
お宝画像(1).jpg お宝画像(2).jpg .... お宝画像(100072).jpg お宝画像(100073).jpg
が入っている。ファイル名はutf8の日本語、連番はカッコ付きで
連番途中に欠番がある可能性がある。これらのファイルをすべて
ero-pic000001.jpg ero-pic000002.jpg .... ero-pic100072.jpg ero-pic100073.jpg
という風にリネームしたい。どうしたらいいでしょう?
0814login:Penguin
2008/03/24(月) 01:03:25ID:zratqhRJ0815login:Penguin
2008/03/24(月) 01:09:16ID:1V6v3lmW0816login:Penguin
2008/03/24(月) 01:11:56ID:BAIAfq4T0817login:Penguin
2008/03/24(月) 01:16:04ID:eiDHSNtlrename '/\d+/ and $_=sprintf(q{ero-pic%06d.jpg}, $&);' お宝画像*.jpg
とか?
0818login:Penguin
2008/03/24(月) 01:23:02ID:RkCnK2Rzmv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
sh file_list.txt
するかな
0819login:Penguin
2008/03/24(月) 02:17:54ID:QVIn50Y1mmvというのは? うちにはないみたいだけど。
>>817
perl版renameというのは普通のrenameとは違いますよね?多分。
>>818
基本的にはその方法を用いましたが、
> mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
ここがエディタでも番号を取り出す文字列操作を伴うマクロかなにかを使う必要があるわけです。
10000行以上あるので手動では無理ですし。私はCでやりましたが。
やっぱそもそも結構めんどくさいことだったんですかね。
なんか簡単そうな感じはするんだけど。
0820login:Penguin
2008/03/24(月) 02:39:44ID:sKYr6YWg指定できるスクリプト(使い方は>>817)のこと。
0821login:Penguin
2008/03/24(月) 02:44:18ID:xdVA6Pwk0822login:Penguin
2008/03/24(月) 02:50:59ID:RkCnK2Rzでも、正規表現使ったら5回くらいの置換でいけるから、
それでやっちゃうなぁ。俺だったら
vi で
:%s/.*\(.[0-9]\).*/ero-pic0000\1.jpg/gc
:%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
みたいな感じで
自信ないけど
0823login:Penguin
2008/03/24(月) 02:56:32ID:NZTM56J5> :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
これダメっぽいような?
あと「お宝動画」は例えばの例でどうかわかんないけど
日本語大丈夫かしら?
0824login:Penguin
2008/03/24(月) 02:57:54ID:BAIAfq4Tgprename
しかしprel-renameみつからない・・・
0825login:Penguin
2008/03/24(月) 03:00:27ID:BAIAfq4T0826login:Penguin
2008/03/24(月) 03:07:10ID:NZTM56J5さんきゅ。これ?
https://sourceforge.net/project/showfiles.php?group_id=40094&package_id=32230
あとひょっとしてPerl版renameって
$ perl -e '{ rename "old-filename", "new-filename";}'
みたいな話なのだろうか?(↑はちゃんと動くようだけど)
0827login:Penguin
2008/03/24(月) 03:08:54ID:eiDHSNtl0828login:Penguin
2008/03/24(月) 03:17:40ID:/I27eUR4#!/usr/bin/perl
rename old-filename, new-filename;
みたいな話とか?なるほどそれならいけそだけど。
0829login:Penguin
2008/03/24(月) 03:20:03ID:sKYr6YWg$op = shift;
foreach (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was, $_) unless $was eq $_;
}
0830login:Penguin
2008/03/24(月) 04:12:10ID:dtyI9N0mあえてシェルスクリプトで書くのならこんな感じかな。
#! /bin/bash
for file in "$@" ; do
num=${file#*(}
num=$( printf '%06d' "${num%)*}" )
mv "$file" "ero-pic${num}.jpg"
done
bashism が嫌いなら sed に置き換えれば
/bin/sh でも動くんじゃないかな
0831login:Penguin
2008/03/24(月) 06:30:29ID:bi7lOxG6for n in {1..100073}; mv お宝画像($n).jpg ero-pic`printf %06d $n`.jpg
0832login:Penguin
2008/03/24(月) 10:57:24ID:62iD1Dht>>826=>>828だけど、ええとそれってシェルスクリプトで使えるの?
/usr/bin/rename が置き換えられているとか?
どうなっているんだろう。
>>830
うちでは動かないようだ。
日本語が混じるとためかな。あとかっことか。
で結局こうやったのだけど。
$ls | sed s/.*\(//g | sed s/\).*//g | awk '{printf("mv \"お宝動画(%d).jpg\" \"ero-pic%06d.jpg\"\n",$1,$1)}' | sh
前やったときはawkの代わりにcのプログラムでやってた。まぁawkでも同じか。
0833login:Penguin
2008/03/24(月) 10:57:58ID:62iD1Dhtzshって便利そうだね。
0834login:Penguin
2008/03/24(月) 22:35:08ID:7MP5JU0gいろんなやり方があるけど、スクリプト内でいきなりmvなりrenameして
失敗すると悲劇なので、
mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像2.jpg" "新しいお宝画像2.jpg"
mv "旧いお宝画像3.jpg" "新しいお宝画像3.jpg"
mv "旧いお宝画像4.jpg" "新しいお宝画像4.jpg"
mv "旧いお宝画像5.jpg" "新しいお宝画像5.jpg"
mv "旧いお宝画像6.jpg" "新しいお宝画像6.jpg"
(以下略)
みたいに一旦テキストに落として、それざっと眺めてからshで流しなおしたほうが良いよ。
以前、
mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像2.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像3.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像4.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像5.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像6.jpg" "新しいお宝画像1.jpg"
(中略)
mv "旧いお宝画像1000.jpg" "新しいお宝画像1.jpg"
ってやっちゃった(´・ω・`)
0835login:Penguin
2008/03/24(月) 23:31:47ID:If29/JKDなんて頭の悪い…
0836login:Penguin
2008/03/24(月) 23:35:42ID:If29/JKD> perl版renameというのは普通のrenameとは違いますよね?多分。
renameがperl版renameじゃないUNIX類って具体的には何があります?
UNIX類じゃないけど、VMSはそうでした。
0837login:Penguin
2008/03/25(火) 00:24:28ID:FMsixLid> 日本語が混じるとためかな。あとかっことか。
括弧の方だな。すまん。クォートするなりしてやってくれ。
0838login:Penguin
2008/03/25(火) 00:44:35ID:Mm1m5DLO$ whereis rename
rename: /usr/bin/rename
$ less /usr/bin/rename
"/usr/bin/rename" may be a binary file. See it anyway?
多分debianが変わり者では?
0839login:Penguin
2008/03/25(火) 00:50:23ID:6V9ksjI9util-linux に入ってるよ。
0840login:Penguin
2008/03/25(火) 00:56:57ID:ukA1etix古典的なLinuxはこのrenameなのかな。
/*
* rename.c - aeb 2000-01-01
*
--------------------------------------------------------------
#!/bin/sh
if [ $# -le 2 ]; then echo call: rename from to files; exit; fi
FROM="$1"
TO="$2"
shift
shift
for i in $@; do N=`echo "$i" | sed "s/$FROM/$TO/g"`; mv "$i" "$N"; done
--------------------------------------------------------------
* This shell script will do renames of files, but may fail
* in cases involving special characters. Here a C version.
*/
0841login:Penguin
2008/03/25(火) 01:44:34ID:Mm1m5DLO古典的なLinuxというより一般的な普通のLinuxはそうだろうな。
Here C Version.のほうな。
http://d.hatena.ne.jp/takunama/20061123/rename
http://d.hatena.ne.jp/moriyoshi/searchdiary?word=*%5Bdebian%5D
debianのrenameは/usr/bin/prenameへのリンクで
prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
つーのが真相らしい。perl版renameはdebianの方言つーことだわな。困ったもんだね。
0842login:Penguin
2008/03/25(火) 01:51:01ID:uIxNik7Bもし使いたかったら$HOME/binあたりに突っ込めばいいんじゃない
0843login:Penguin
2008/03/25(火) 02:00:22ID:+i6zdHekls -1 ero_dir | sort | ruby -nle 'printf "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
0844login:Penguin
2008/03/25(火) 02:03:33ID:+i6zdHekls -1 ero_dir | ruby -nle 'print "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
0845login:Penguin
2008/03/25(火) 02:05:27ID:6V9ksjI9> prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
↓だってさ。
# This script was developed by Robin Barker ([email protected]),
# from Larry Wall's original script eg/rename from the perl source.
0846login:Penguin
2008/03/25(火) 03:45:05ID:mfggD9uB0847login:Penguin
2008/03/25(火) 06:52:15ID:Mm1m5DLOprenameは Debian のパッケージメンテナが独自に
「the perl source(perlのオルジナルセット、いわゆるラクダ本)」から
パッケージ生成時に追加したスクリプト、つーことですね。
/usr/bin/renameがC版の代わりにこれで置き換えて拡張してあるのが
debianの方言ということで。
実はラクダ本のやつは見たことがあるな。
0848login:Penguin
2008/03/25(火) 17:01:59ID:7L4Qk+Sn・Here a C versionは正規表現を全く理解しない
・perl版はperl版正規表現を理解する
というわけでLinuxでも三種類あるんですね。
0849login:Penguin
2008/03/25(火) 17:59:25ID:Mm1m5DLOスレからはずれるけど、apache/httpdのコンフィグがバージョン系列は
一緒なのにDebian系(ubuntuも)とRH系(RedHat/Fedora/CentOS)で
まるっきり違ってて面くらったことがある。
0850login:Penguin
2008/03/25(火) 18:02:21ID:IQ4Jbr/00851login:Penguin
2008/03/26(水) 21:17:50ID:B6BxqxUifind / -type d|sort|sed -ne'1b;s/[^\/]*\//┗━━/g;s/┗━━┗━━/┃ ┗━━/g;
s/┗━━┗━━/┃ ┗━━/g;
s/┗━━┃/┃ ┃/g;p'
これだと下記のような表示になるのですが
┗━━proc
┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┃ ┗━━task
┃ ┃ ┃ ┗━━1
┃ ┃ ┃ ┃ ┗━━attr
┃ ┃ ┃ ┃ ┗━━fd
┃ ┗━━1106
┃ ┃ ┗━━attr
不要な線を無くして見栄えを良くしたいのですが、何か良い方法はありませんでしょうか
┗━━proc
┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┃ ┗━━task
┃ ┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┗━━1106
┃ ┃ ┗━━attr
0852login:Penguin
2008/03/26(水) 21:52:30ID:f9ufLLgD■ このスレッドは過去ログ倉庫に格納されています