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


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

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



1 名前:名無しさん@お腹いっぱい。 [2008/02/11(月) 19:21:07 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>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 でトレースしましょう。

前スレ
シェルスクリプト総合 その9
pc11.2ch.net/test/read.cgi/unix/1187130302/

711 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 18:56:59 ]
普通に考えたら出来る

712 名前:名無しさん@お腹いっぱい。 [2008/04/21(月) 19:01:20 ]
>>711
結果をファイルに出力してもいいのであれば、
find -type dでループを回していけばやれるのはわかっているのですが、
作業ファイルを介さずにそのままwhile readで受け取れるくらい
簡単な方法がないかな?と思って質問させて頂きました。

713 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 19:12:16 ]
多分スクリプト言語使った方がいいと思う

714 名前:名無しさん@お腹いっぱい。 [2008/04/21(月) 19:19:38 ]
>>713
ちょっとごめんなさい
ディレクトリは名前順でもいいです。
当初>>710で書いたよりはずっと簡単に実現できます。

715 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 19:19:44 ]
>>711
そういうことはお前の考えた結果を貼ってから家。

716 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 19:26:48 ]
>>714
「ディレクトリが先」という条件さえなければ、
単に ls -latR で行ける。findすらいらない。

>>712
結果をファイルに出力する方法でやる方法がわかってるなら、
それをファイルに出力しない方式に書き換えることは多分できる。

717 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 19:31:02 ]
>>710
GNU ls使えば、
ls -latR --group-directories-first
で一発。


718 名前:名無しさん@お腹いっぱい。 [2008/04/21(月) 20:23:19 ]
みなさんどうもありがとうございました。
結局(とりあえず)、
find -d でループを回して作業ファイルを作る方法にしました。
ディレクトリは名前順でファイルは更新時間降順にしました。
ちなみにGNU ls 5.21で--group-directories-firstはサポートされてませんでした。

719 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 21:04:47 ]
find ... -print0|xargs -0 ...
と区切りをわざわざ^@にするのが推奨されてるのって何故なんですか?



720 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 21:13:18 ]
他の文字はファイル名に使われてるかもしれないから。

721 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 21:55:46 ]
-print0|xargs-0を使うのは石器人。
現代人なら-exec utility_name [argument ...] {} +

722 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 21:57:15 ]
いまさら-execはちょっと…という気分
気分だけね

723 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 22:08:08 ]
>>722
お前、行末の「+」の意味知ってて発言してるのか?

724 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/21(月) 22:15:16 ]
>>718
GNUコマンド群くらい最新にしとけよ。6.xなら使える。

725 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 02:59:08 ]
>>724
バージョンアップできない(許可されない)環境って結構多いぞ。
(*nix系ならローカルに実行環境つくれば済む話だが)

726 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 07:04:01 ]
>>725
もしそういう環境なら、GNU lsを入れること自体許可されないだろ。
(古いバージョンとは言え)GNU lsが入っているということは、
OS標準じゃないコマンドを自分でインストールしてもいい環境と考えられる。

727 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 10:39:16 ]
システム構築時にGNU系を入れて構築、運用開始した後、
バージョンアップの費用(現システムの稼働確認費用)が認められないため、そのままってパターンが多い。

そういうトコだと、ローカルに新版lsをコピーしてくる方が(手続き的に)楽だったり。

728 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 12:30:34 ]
>>710
タイムスタンプが、
2008-04-22 12:30
こういう形式で、
$6, $7にあると仮定すれば、
ls -l | sort -k 6,7 | sort -sr
でいい。-sはstable sort。

729 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 13:27:05 ]
>>728
それだと symbolic link が先頭に来てしまうので失格。



730 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 13:30:00 ]
>>728
というか、せっかく sort -k 6,7 したあとで sort -sr したら
最初の sort -k 6,7 が無意味になってしまうし、全然ダメじゃん。

731 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 19:43:49 ]
つ sort -srk 1,1

732 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/22(火) 19:58:42 ]
>>731
>>729
失格。

733 名前:名無しさん@お腹いっぱい。 [2008/04/23(水) 15:40:13 ]
Apache の mod_ext_filter モジュールを利用したスクリプトを作成しています。

Apache --標準出力--> script --標準出力 --> Apache を行うスクリプトにて、
Apache からの標準出力を $temp_file に書き出して主な処理をした後に
cat $temp_file を行い Apache に返しているのですが、

#!/bin/sh

temp_file=`mktemp`
while read line
do
echo "$line" >> $temp_file
done

ファイル操作

cat $temp_file
rm -f $temp_file


上記コードだと、HTML ソースに \ $ ` などが入っていた際に、
echo "$line" >> $temp_file で意図せぬ動作が起きてしまいます。

またファイルに書き出す事で処理速度の低下も考えられるので、
Apache からの標準出力(複数行)を変数に格納する方法はないかと思ったのですが、

どなたかご教授ください。

734 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/23(水) 20:08:40 ]
>>733
それはシェルのreadの仕様だから仕方ない。
そもそも while readで読む必要ないだろ。

while do ... done の部分全部を、
cat > $temp_file
に置き換えればよろし。

735 名前:733 mailto:sage [2008/04/23(水) 20:31:31 ]
>>374
おぉ、色々と勘違いしていたみたいですね。
ご指摘の方法でやってみたところちゃんとできました。
すみません、ほんと有難うございます。


736 名前:733 mailto:sage [2008/04/24(木) 00:18:33 ]
733です。
度々すみません。

#!/bin/sh

temp_file=`mktemp`
cat > $temp_file

ファイル操作

cat $temp_file
rm -f $temp_file

確かにご教授いただいた上記コードで可能なのですが、
Apache からの標準出力をファイルに書き出さず、変数として処理する事は出来ないのでしょうか?

737 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 00:55:16 ]
そんなに速度が気になるなら他の言語でやったほうがいい

738 名前:733 mailto:sage [2008/04/24(木) 01:45:55 ]
>>737
ありがとうございます。
色々試行錯誤してみます。

739 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 06:52:22 ]
>>736
その「ファイル操作」の内容が、

sed 's/hoge/boke/' < $temp_file

だとすると、そもそもcatは2つとも要らない。

#!/bin/sh
sed 's/hoge/boke/'

↑の2行だけでOK。
sedは、何も指定しないと標準入力から読んで標準出力に出すから。



740 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 06:56:05 ]
>>736
一旦変数に入れたいなら、

tmp=`cat`

とする。これで変数tmpに入る。
参照する時は、

echo "$tmp"
とする。シェルに特殊文字を解釈されないように" "を付けるのを忘れないように。

741 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 19:36:45 ]
>>739
返信ありがとうございます。
標準入力の内容によって条件わけがしたかったので、ご指摘の方法は断念しました。

>>740
返信ありがとうございます。おかげさまで出来ました。
一つ疑問が残るのですが、ダブルクォート (") は $ ` \ 以外を普通の文字として扱うと認識していますが。

# echo "`date`"
Thu Apr 24 17:55:30 JST 2008

# cat sample.html
<html>
<body>
`date`
</body>
</html>

# cat filter.sh
#!/bin/sh
temp=`cat`
echo "$temp"

# cat sample.html | sh filter.sh
<html>
<body>
`date`
</body>
</html>

なぜ echo "$temp" では ` が普通の文字として扱われているのでしょうか?
お恥ずかしい質問で済みません。

742 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 19:38:59 ]
変数、サブシェルなどの展開は一度だけ。
再度展開したい時はeval。

743 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 20:15:21 ]
>>742
eval をさっそく調べ、勉強になりました。
ありがとうございます。


744 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:26:56 ]
質問させてください。
シェルスクリプトで16進数を2進数に変換するにはどうしたらいいでしょうか?


745 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:49:57 ]
どうしてもシェルスクリプトというならこんな感じか。
最適なのはbc。sedだけでもできる。

h2b() {
for h in `echo $1 | sed 's/\(.\)/ \1/g'`; do
case $h in
0) echo -n 0000;;
1) echo -n 0001;;
2) echo -n 0010;;
3) echo -n 0011;;
4) echo -n 0100;;
5) echo -n 0101;;
6) echo -n 0110;;
7) echo -n 0111;;
8) echo -n 1000;;
9) echo -n 1001;;
a|A) echo -n 1010;;
b|B) echo -n 1011;;
c|C) echo -n 1100;;
d|D) echo -n 1101;;
e|E) echo -n 1110;;
f|F) echo -n 1111;;
esac
done
echo
}


746 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:54:10 ]
>>755
あ、どうしてもってわけじゃないです。
コマンドとかありますか?何度もすいません。

747 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:17:50 ]
bcで16進数を2進数に変換。
できそうでよくわからない・・・orz

748 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:18:21 ]
bcならこんな感じかな、便利だね知らなかったよ。
echo "obase=2; ibase=16; $1" | bc

749 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:32:27 ]
>>748
ありがとう。しかしながら
例えば 0xffffff00 これを10進数に変換したいと思い

echo "obase=10; ibase=16; 0xffffff00" | bc

とやってみましたがsyntax errorがでました・・・orz



750 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:40:21 ]
頭に0xは付けずに,それから大文字で書かないといけないっぽい.

751 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 02:03:41 ]
>>750
なるほど。ありがとうございました。

752 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 06:48:02 ]
>>749
bcなんか使わなくても printfで一発だろww

$ printf '%d\n' 0xffffff00
4294967040


753 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 08:48:45 ]
んっと、釣られとくけど、

志村ー

754 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:18:18 ]
>>753
なにが釣りなのかわからないゆとりな俺にkwskたのむ

シェルスクリプトのtmtowtdiな感じって好きだ

755 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:28:34 ]
printf(3)は二進がないからなあ。
printf(1)の%bは違う意味だし。

756 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:35:12 ]
>>775
欲嫁。
>>749 は 16進→10進の質問。
>>752 はそれに最適解を答えている。

757 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:01:10 ]
昨日質問した者です。ちょっと間違ってました。ごめんなさい。

正しくは ffffff00 これを 255.255.255.0 に変換したい。です。
これってできるのでしょうか?

758 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:09:13 ]
簡単だね
>>757
$ hex=ffffff00
$ printf '%d.%d.%d.%d\n' `echo $hex | sed 's/../0x& /g'`
255.255.255.0

759 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:57:09 ]
>>758
すごいなぁ。ありがとう。



760 名前:名無しさん@お腹いっぱい。 [2008/04/26(土) 12:50:24 ]
>>758 これは(・∀・)イイ!! もれももらた

761 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/26(土) 16:59:52 ]
よく読まずに余計な突っ込みした >>753 は今ごろ赤面ww

762 名前:名無しさん@お腹いっぱい。 [2008/04/28(月) 17:23:56 ]
>>761

kannke-nexekedo
お前のレスうざい

763 名前:名無しさん@お腹いっぱい。 [2008/04/29(火) 09:04:12 ]
シェルで、拡張子の付いていないファイルを一発でワイルドカード指定するには
どうすればいいですか?

あるいは、何かのオプション変更とかで、
* で、hogeとかだけにマッチして、
hoge.hog にはマッチしないようにして、
*.* とやった時だけ hoge.hogにマッチするようにしたいんです。

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 09:43:06 ]
一部シェル限定ならできる
一発でなくていいならできるようにはできる

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 11:18:22 ]
>>764
kwsk

766 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:33:12 ]
>>764 は、具体的な「やりかた」を書かない(書けない)知ったかの
>>680 と同一人物、に1俵。

767 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:39:25 ]
>>765
シェルは何だ?
ワイルドカード使うシチュエーションは?カレントディレクトリだけなのか?
ファイルの表示ができればいいだけなのか?各ファイルに何かするのか?

>>766
あいにく違うな
1俵よこせ


768 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:43:35 ]
>>767
じゃなくて、逆にその「できるシェル」を教えて欲しい。
シチュエーション関係なしに、すべての場合において
* が hoge.hogにはマッチしないようにしたい。

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:46:16 ]
EXTENDED_GLOBつきのzshで*~*.*かな。



770 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:55:22 ]
* 1個の動作を変えられるようなシェルはないかと思う

同じくzshで
setopt EXTENDED_GLOB
ls -d [^.]#


771 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:57:46 ]
command.com

772 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:01:56 ]
少なくとも >>766 だけうざいな

773 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:50:40 ]
シェルを秘密にしたいのだからエスパースレに行くべきだな。
全ての場合を見通して答えてくれるエスパー様(>>766)に任せよう。

774 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:58:03 ]
できるシェルを教えてくれっていう質問だから、
シェルを秘密にしてるのとは違うかと

775 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 20:45:09 ]
よく読まずに余計な突っ込みした >>773 は今ごろ赤面ww

776 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:08:40 ]
>>775
お前のレスうざい


777 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:32:45 ]
OSを秘密にしているのだから、エスパー様の出番だな。
余計な突っ込みした、知恵足らずの>>775は今ごろ赤面ww

778 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:41:31 ]
シェルはOSには依存しないな。
余計な突っ込みした、知恵足らずの>>777 は今ごろ赤面ww

779 名前:名無しさん@お腹いっぱい。 [2008/04/29(火) 21:43:02 ]
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。



780 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:54:17 ]
まあよくある願望とごっちゃにしたな

781 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:04:17 ]
たとえば最近の例を引き合いに出すが、
>>757 の質問(OS不明)に >>758 が的確に回答してる。
どこにもOSに依存してるところはないな。

>>757 に対して「OSが秘密じゃ答えられない」なんていってる奴は
無知をさらけ出してる奴。OSがわかったところで答えられないだろう。

782 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:06:52 ]
全然関係ない事例を持ち出して
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
を誤魔化そうとする>>778憐れ。

783 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:08:34 ]
本件事例の
>>769 の回答は、OSには依存しないな。

784 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:17:34 ]
糞みたいな雑談でスレを延ばすなよ
コードで語れ

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:22:29 ]
G Em7 Am7 Am7/D D7 G

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:23:36 ]
>>769は誤回答。お題は「* で、hogeとかだけにマッチして、hoge.hog にはマッチしない」

787 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:25:33 ]
OSに依存しない誤回答ですね。

788 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:45:17 ]
誤解答を例示して
> シェルはOSには依存しないな。
を誤魔化そうと必死の>>778憐れ。

789 名前:名無しさん@お腹いっぱい。 [2008/05/02(金) 11:38:05 ]
$ls
test1.jpg  test10.jpg test2.jpg
test3.jpg  test4.jpg  test5.jpg
test6.jpg  test7.jpg  test8.jpg
test9.jpg

と1桁の数字からなる連番ファイルがあるときに

$ls
test0001.jpg  test0002.jpg  test0003.jpg
test0004.jpg  test0005.jpg  test0006.jpg
test0007.jpg  test0008.jpg  test0009.jpg
test0010.jpg

というように4桁の連番ファイルにリネームしたいのですが、
ご教授お願いします。



790 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:40:37 ]
>>789
mv
sed
printf
for

これだけ調べればできる

791 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:41:07 ]
書き忘れた、

test10.jpg
これ 1桁の数字じゃないよな

792 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:43:03 ]
>>789
環境依存かつ汎用性ナシだけど、
おれならこうやっちゃう。
$ for i in {1..9}; do mv test$i.jpg test000$i.jpg; done
$ mv test10.jpg test0010.jpg

793 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:49:01 ]
>>789

#!/bin/sh

for file in *.jpg
do
num=`expr $file : '[^0-9]*\([0-9]*\)'`
base=`expr $file : '\([^0-9]*\)'`
num=`printf %04d $num`
echo mv $file $base$num.jpg
done


794 名前:789 mailto:sage [2008/05/02(金) 11:52:46 ]
>>791
最初1桁の例だけ書いてたんで、
2桁も混じっているということを書き忘れました。

>>792
$ for i in {1..9}; do mv test$i.jpg test000$i.jpg; done
$ for i in {10..99}; do mv test$i.jpg test00$i.jpg; done

ってかんじですかね。ありがとうございます。

795 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:52:51 ]
>>790
具体例を示さない奴は黙ってろ。あと、sedよりexprの方がいいな。

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:53:29 ]
>>794
>>793

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:55:18 ]
3桁のときは、0を一つ、2桁の時は、0を2つ
一桁のときは、0を3つってつけてけばいいねん
sedだけでできる

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:56:45 ]
>>797
そんなことをしなくても >>793 で一発。

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:57:56 ]
でしたね^^
解決したようで



800 名前:793 mailto:sage [2008/05/02(金) 12:09:21 ]
sedだけでやるならこうかな

#!/bin/sh

for file in *.jpg
do
new=`echo $file | sed 's/[0-9]/0000&/; s/[0-9]*\([0-9][0-9][0-9][0-9]\)/\1/'`
mv $file $new
done


801 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:11:08 ]
ごちゃごちゃしてるなぁ

802 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:13:48 ]
そう思うならprintfの方がすっきりする

803 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:16:28 ]
カレントディレクトリ配下で自分が所有者のファイルを探してすべて消したいのですが、
どのように書けばいいですか?

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:17:35 ]
find . -user `whoami` -exec rm -f {} \;

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:18:06 ]
ありがとうございます
試してみます

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 20:11:05 ]
>>795
> >>790
> 具体例を示さない奴は黙ってろ。あと、sedよりexprの方がいいな。
お前が真っ先に黙れ。

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 12:08:46 ]
若干スレ違いですが、
シェルスクリプラーなみなさんが詳しそうなので質問させてください。

unix,linuxで、
カーネルの脆弱性なんかでrootに権限昇格の可能性があるのって
特定コマンドを利用不可にしていたら難しい、
なんてことあるでしょうか?

また、特定コマンドを利用した回数、利用したユーザ、
とか調べる方法ってないでしょうか?

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 13:02:50 ]
つ BSD acct & lastcomm

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 13:55:52 ]
>>807-809
具体例を出さない書き込みは禁止。



810 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 15:43:33 ]
若干どころじゃなくスレ違い。

811 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 15:47:30 ]
「シェルスクリプロ」って何ですか?






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

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

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