カレントディレクトリにある、大文字のファイル名を
すべて小文字のファイル名に直したいのですが、
どういうUNIXを打てばいいでしょうか?
こういうの流行ってるの?
シォル
「UNIXを打つ」ってすげぇ表現だな
>>680 OS名を書かないと、答えられる人は誰もいないと思います。
いやむしろどのUNIXにするかってい(ry
シェルスクリブトが長すぎるから、略すバカが出るんだよ
で前スレでこの板公認の略称が決まらなかったっけ?
シェルス にしよう
スクリブトってゆうな。クズ。
「UNIXを打ちながらこう考えた…………
…………とかくにシェルは書きにくい。」
691 :
642:2006/03/15(水) 21:35:03
エレガントじゃ無くてすいませんw
趣味でか触ってないのでいつまで経っても初級者から成長しないんですよね。
で、
sed 's/$/ /g' L1 | tr -d "\n" | sed 's/\([0-9]+\)[^0-9]/\1\n/g'
で★キマリッ★
シェルをあぽーんキーワードにすると、、、、、、、、、
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
あぽーんってゆうな。クズ。
シェ…しぇ…シェ………シェ…
…… … …… ……………… … …… … … …シェ… …
春休み期間中なのにもかかわらず平日に書き込みが減るのは、
馬鹿回答をしているのが馬鹿学生じゃなくて馬鹿社会人だからだろうな。
学生でもなく社会人でもありませんよー。
699 :
名無しさん@お腹いっぱい。:2006/03/16(木) 13:48:35
シェルスクリプトで変数TODAYにyymmddを設定したいのですが、
どうやるのか判りません。
yyyymmddの8桁日付なら`date +%Y%m%d`で設定できるのですが、
yymmddで6桁日付だとどうやるのでしょうか?
awkのsubstrという関数を上手く使えればできそうなのですが、
awkの使い方をいまいち理解できてないので・・・・
申し訳ありませんがよろしくお願いします。
>>699 date +%y%m%d でできるよ。yは小文字。
ただし、%yは2000年問題の関係で推奨されない。
>>700 質問欲嫁。この場合 man strftimeしても解決しないだろ。
702 :
699:2006/03/16(木) 15:08:28
701
ありがとうございました。
できました。
すごく単純なコマンドで出来たんですね(汗)
>ただし、%yは2000年問題の関係で推奨されない。
そんなの用途しだいでしょ。
昔のデータなんか扱わないようなところとか。
>質問欲嫁。この場合 man strftimeしても解決しないだろ。
man date するとたいてい strftime(3) を参照と書いてないか?
>>703 man dateしたなら、すでに %y のことは書いてある。
strftime(3)のことは書かれていなかった。
strftime(3)にでてるじゃん
誰だよ,解決しないとか言ってる奴
>>705 strftimeはC言語の関数。
そっちに載っていたとしても、回答としては不適切。
もっとそのものズバリのman dateがあるのだから。
なんでわざわざ遠い回答するの?
「man hoge」厨は、よく確認せずにカキコするため、回答をハズしやすいの法則。
ごめんdateコマンドだったか
おそらく
>>700 は、dateコマンドでも +%y が使えることを知らず、
そういうことがやりたいなら strftime() を使って、
C言語でプログラムを書け、と言いたかったんじゃないかな。
それが、実は date +%y で簡単にできてしまうことがわかり、
突っ込まれたので暴れているわけだ。
>>706 FreeBSD で man date を確認すると
% を使った詳細の書式は載っていない。
man strftime ならたぶんどの OS でも載ってるっしょ。
712 :
700:2006/03/16(木) 16:14:40
>>710 いきなり man strftimeしても、質問者にとっては、
それがdateで使えるとはわからない。
載っているのはC言語なので、最初の数行読んで「違う」「ガセネタだ」と
思うだろう。
man strftimeとか言わずに、
>>701 みたいに date +%y%m%d と、直接回答するのが
もっとも価値が高い回答ではないだろうか。
この板最近回答者への要求きついね。
回答控えようかな。
FreeBSDでman dateでこれだけ載ってりゃ十分じゃ内科医
--------------------------------
yy 西暦の省略表現です。西暦の 10 の位と 1 の位です (1989 年なら 89、06 なら 2006)。
〜中略〜
使用例
以下のコマンド:
date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
は、下のような表示を行ないます。
DATE: 1987-11-21
TIME: 13:36:16
だから今のコンテキストでは、%y が載ってないのはクズ
確認してみたが、SolarisとLinuxのman dateでは %yの他、%の書式解説が載ってるぞ。
遠回しなman書いてるFreeBSDはクズ。
手元の Solaris9 の man にはないようだが……。
date(1)には書式文字列はstrftime(3)に載っているっ
て書いてあるけど。strftime(3)は遠回りでもなんでも
なく、直球だと思う。まぁ、date(1)にstrftime(3)を
見ろと載っていると一言あってもいいけど。
An operand with a leading plus (`+') sign signals a user-defined format
string which specifies the format in which to display the date and time.
The format string may contain any of the conversion specifications
described in the strftime(3) manual page, as well as any arbitrary text.
つーか、質問者以外が難癖つけすぎ。
というか、Solarisの場合manは非標準で、標準はアンサーブックとかに変わったし、
Solarisスレでは二言めには docs.sun.com読め、なので、manは標準じゃないのだろう。
>>719 だからぁ、それはFreeBSDの場合なんだって。
そもそも、dateコマンドで行けるかどうかの情報すらない段階で、
man strftimeでは意味が通じないよ。
元が「dateの書式が知りたい」という質問なら
man strftimeでもわかるけど。
実際にはそうじゃない。
質問者の
>>699 は、8桁日付の date +%Y%m%d については知っている。
これを、6桁にしようと、awkのsubstr関数を使うことを考えていた。
この段階で、質問者は「dateコマンドだけではできない」と
考えていたと推定できる。
すると回答としては、まず、「dateだけでできるんだよ」ということを
教えてやらないといけない。
ところが、ここで「man strftime」などと回答すると、
「dateの出力をstrftimeというコマンド(←実際にはない)で加工する」
あるいはawkを考えているため「awkにstrftimeという関数がある?」
などと、誤った方向に誘導してしまう。
だから、manなどで回答するのではなく、
`date +%y%m%d`
と一言いえば済むことだったのだ。
回答者は date でできるのが分かってたんだから、man を良く嫁で良かったんじゃないのか。
直接、答えを教えるのは良くないよ。
manで回答する香具師って、実際に動作確認せずに回答してるだろ。
オレはその点が気になる。
シェルスクリプトとして動作確認してるなら、
回答は直接のコマンドラインになるはず。
直接答を書くというか、動作確認のためにそれは必要なこと。
なんで701はこんなに必死になってるんですか?
>>714 元々モマエは役に立ってないから
イエローで首括って良いよ
>>724 仮に動作確認のために動かしても、マニュアルに載ってることは答えを
直接書くべきじゃない。回答者の学ぶ機会を奪うのか?
>あるいはawkを考えているため「awkにstrftimeという関数がある?」
>などと、誤った方向に誘導してしまう。
GNU awk にはあるよ。その man でもちゃんと strftime(3) に誘導してる。
>>728 awkにstrftimeがあるのは知ってるよ。
だからこそ紛らわしいと言ってるんだ。
dateでできるのにわざわざawkでやると無駄だろ。
しかも、awkのstrftimeでdateみたいに表示させるの、
結構記述量多くなるよ。
余談だけど、
awk 'BEGIN { print strftime("%y%m%d") }'
だね。
確かに、こんなこと書くより、
date +%y%m%d
の方がエレガントだね。
>>727 >回答者の学ぶ機会を奪うのか?
確かに、「回答者」こそいい回答方法を学んで欲しいよねw
man回答は最低。
732 :
680:2006/03/16(木) 21:08:35
すみません。
>>680 がまだ解答が付いてないんですが、
よろしければこれをネタに、解答者バトルをお願いします。
こんなUNIXを打ってください
sh -c 'for i in *; do mv $i `echo $i | tr a-z A-Z`; done'
>>733 逆に大文字に変換してるのはわざと?
あと、sh -c が無駄。
cshユーザーは居ないという大前提があるので、
sh -c する必要なし。
>>734 > 逆に大文字に変換してるのはわざと?
素でまちがえただけよ
もっとハデなバトルネタきぼん
737 :
680:2006/03/16(木) 21:41:44
>>733 ありがとうございます。733のUNIXを打つと途中まで行けるんですが、
My Document.txt というファイルがあるところでエラーになります。
こういうファイルも対応できるUNIXの打ち方はありませんか?
「UNIXを打つ」ってすげぇ表現だな
>tr a-z A-Z
あれ?
[]がいるんじゃね?
>>739 man tr
[]はいらねーよ。正規表現じゃないんだから。
もまいら、ちゃんと動作チェックしてから書き込め。
それとも手元のPCがWinで、すぐにUNIXが打てないのかな?
SysVの古いバージョンの tr だと [ ] が要ったらしい。
でも、Solarisの tr でも [ ] なしで動くので
[ ] はもう要らないのだろう。
solaris8のマニュアルだと、
/usr/bin/trの場合は、[]がいるみたいだぞ。
/usr/xpg4/bin/trの場合はいらんみたいだが。
Solaris9の/usr/bin/trだと [ ] なしで動いた。
manはインスコしてないので未確認。
manってうぜー。
現物確認が一番。
manぐらい入れとけよ
Solarisでは、「manは将来のリリースではサポートされない」みたいな記述を
何年か前に見たから、インスコしないことにしている。
LinuxのmanをNFSマウントしてそれを読んでるが、
それでだいたい間に合ってしまうんだよ。
Linuxのmanって、なんか古い記述が残ってたり、テキトーなのが多くないか?
Solarisのmanの方が全然いいぞ
例えばThread-SafeかどうかSolarisのは全部書いてあるし
>>747 > Linuxのmanって、なんか古い記述が残ってたり、テキトーなのが多くないか?
日本語の man はそういうの多いね。
--help オプションとかがあるコマンドなら
そっちで確認した方が確実だね。
>>749 manも--helpオプションも間違ってて、
ソース読まざるをえないことが数度あった。
bashとかのでかいmanはよみにくいな。
かといって、zshとかperlみたいなのもな
-gつきでコンパイルしてあれば--sourceでソースが表示されるというのを標準にしよう
perl は独自に分割されてていまいちわからん。
ああいうのなら info の方がいい。
オマエら能書きは良いからUNIX打てよ
>>746,747
Solarisのmanは、docs.sun.comと同じソースで、
かなり前からSGMLドキュメントがオリジナルになっている。
アンサーブックの時代にそうなった。
/usr/man/sman*
で、
>>737 に対応したUNIXは誰も打てないのかよ?
しょーがねーなあ。少し上の方みりゃ分かると思うんだが。
for i in *; do mv "$i" "`echo "$i" | tr a-z A-Z`"; done
誰か俺の心を揺さぶるようなUNIXを打ってくれ!
UNIXを打ち込んでくれー!!
つーか
>>737 は普段windowsをクリックしてるんだろうけど
なんで突然UNIXを打たなきゃなんなかったのか気になる
>>745 Solarisのインストール時に、最小インストールを選択すると manは入らないよ。
サーバー専用機などで Xが不要の場合、
End Userインストールより下には最小インストールしか選択肢がなく、
それを選んで manなしになっているマシンは多い。
manぐらい入れとけよ
manにtinを入れるってか。
10台、100台とあるマシンに、同じmanのコピーをインストールするのは無駄。
しかも、manは実行ファイルでもあるまいし、サーバー専用機の場合、
サーバー機にloginしてmanを読むこと自体無駄。
あ、だからdocs.sun.comなのか。
セキュリティの関係でNFSを使えないサーバーもある。
>>766 情報を後出しされてもなぁ
じゃmanサーバ立てて都度読みに行けば?
使わない実行ファイルだって山ほど入ってるだろうに
まったくだ。昔のsun3とかの時代ならそりゃもうケチケチ使ってたよ。
find / -type f -atime +365 -exec rm -f {} \;
でも実行しとけ
"Core System Support"で入れて、デフォでは入らない manを、
多数のマシンに pkgadd して回るなんて面倒なことはできない。
デフォで入らなかったというのはそれはそれで意味があるのだろうし、
あえてデフォの状態をいじりたくないというのもある。
なら入れなきゃいいじゃん。
それをシェルスレで主張する意味がわからん。
man co.jp
シェルゆうな
そうだよ、入れなきゃいいんだよ。
オレは入れるなとは主張していない。
「manくらい入れろ」と言ってる
>>762 とかに
反論してるだけ。
入れなくてもいいけど、man嫁って言われて切れるなよ
言っとくけど、man入れてないオレは回答者側。
このスレで質問したことは一度もない。
回答は多数。
初心者の質問に、誰かが man嫁と回答してるのを見て、
その直後にもっとずばりの回答をしてるのがオレ。
manなんかで回答するんじゃないぞ。
manぐらい入れとけよ
manはそのマシンに入っているから価値があるんだろ。
質問者はみんな man 入れてるよ。
はやくUNIX書けよ
>>777 > 初心者の質問に、誰かが man嫁と回答してるのを見て、
> その直後にもっとずばりの回答をしてるのがオレ。
質問者が調べる機会を奪っちゃいかんよ。
>>777 でもオマエmanの入れ方解らないで教えてもらったじゃん
僕にもmanの入れ方教えてくださいm(_ _)m
結局manが使えないバカの再教育からUNIX打たないとダメか
>>777 どのようにして、その先入観を打ち破る事が出来るのか。本当に悩ましい
>>786 そのネタもう古い。もっと新しいの頼む。
ずばりの回答か・・・ま、ほんとにずばりならいいが。
ずっぽりの回答
790 :
名無しさん@お腹いっぱい。:2006/03/18(土) 00:18:15
相変わらずレベル低いなw
ここはmanについて考えるスレかよ!
man入れるか入れないかは別として回答としては
>>701が一番良いと思うけどな。
>>699の人はある程度調べた後に質問したように見えるし、調べる方向が間違いつつあるようにも見える。
そういう人にはそのものずばりの回答を出せば、その人は自分で man date で回答を確かめる事をすると
思うよ。
792 :
名無しさん@お腹いっぱい。:2006/03/18(土) 12:28:56
>>791 だから?
要するに君はここが相変わらずレベル低いと言いたかったわけだね
>>791 ジサジエも飽きたから何か変わったUNIXを振ってくれよ
794 :
791:2006/03/18(土) 13:35:17
>>793 俺は701では無い。
manも入れてる。
ねたは無い。
795 :
名無しさん@お腹いっぱい。:2006/03/18(土) 13:39:28
十代に若返ってナオンとずっこんばっこんできるスクリプトをお願いします
>>795 #!/bin/sh
if [ $# -lt 1 ]; then
echo 'usage: manco YourAge' 1>&2
exit 1
fi
thisyear=`date +%Y`
year=`expr $thisyear - $1 + 16`
sudo date 01010000$year
echo 'Happy old year!'
man co
797 :
名無しさん@お腹いっぱい。:2006/03/18(土) 14:03:36
動かしていると、自然にディレクトリ中にスクリプトが増えていくのはワームですか。
バグです
>>796 ありがとうございます。
早速実行してみましたが、
53歳だと、dateの実行のところでエラーになって
16歳に戻れません。
53歳以上にも対応したUNIXを打つ方法はありませんか?
800 :
796:2006/03/18(土) 14:44:14
>>799 楽観的な仕様と引数の範囲チェック無しで作成してしまいました。
>>793さん、変わったUNIXが振られましたのでよろしく。
>>794 典型的な自作自演の告白乙
ココではそんなお約束は書かなくてもおk
よしきた、俺にまかせろ!
俺は801では無い。
manは入れてない。
いつもずっぽり。
Sambaで coding system = hex で運用されていたサーバーがあります。
これを、coding system = euc に変更したいので、
hexでエンコードされた「:」入りの日本語ファイル名をすべて
EUCに変換したいのですが、
どういうシェルを書いて、どういうUNIXを打てばいいでしょうか?
>804
それ、、、以前使ったら、シンボリックリンクも全部おいかけられて、
1つのファイル名を何度も何度もコード変換されて、全部の日本語
ファイルが化け化けになったw
>>806 findの -execのところに ` ` 書いても期待通りに動作しないと思うぞ。
find実行される前に展開されんだろ
809 :
名無しさん@お腹いっぱい。:2006/03/19(日) 00:18:50
>>798 うーん、795の意図を正確に処理したら、
子プロセスがたくさん出来て困るんですけど。
810 :
名無しさん@お腹いっぱい。:2006/03/19(日) 01:37:00
すいませんが、お力を貸してください
実行されたらあるディレクトリがあるか調べて
そのディレクトリが存在していれば○○
存在していなければ停止
このようなシェルスクリプトはどう書けばいいのでしょうか?
できればbashとshの両方が知りたいです
811 :
名無しさん@お腹いっぱい。:2006/03/19(日) 01:47:49
>>810 if [ -d あるディレクトリ ]
then
○○
else
停止
fi
>>810 A = 'ps ax | grep あるディレクトリ | wc -l'
if [ $A ]; then
○○
else
停止
fi
>>810街がえっタ
A = 'ls | grep あるディレクトリ | wc -l'
if [ $A ]; then
○○
else
停止
fi
で、
>>806 だと不正解なわけだが、誰も正解はわからないのかな?
>>811 man で回答するのヤメレ。
>>812 正解。
>>813-814 初心者かな?
>>812 の正解を参照汁。
それだとディレクトリがなくても wc -l の結果の 0 が Aに入るので、
ifで常に結果が真になる。grepでの判定も曖昧。
そんなことしなくても [ -d hoge ] でできることを覚えろ。
>>811,817
おまえら一生manだけ読んでろ。manを読むばかりで手を動かさない机上の空論者だな。
>>808 はぁ?
>>806 はfind実行する前に ` `が展開されるよ。
しかも、find の -exec のあとは直接のコマンドであって、
シェルスクリプトではないため、
-execの実行時には一切のシェルの解釈を受け付けない。
だから、仮に ` ` がfindの実行前に展開されていないとすると、
逆に -exec の時に ` ` がエラーになる。
いずれにしても、
>>806 は大間違い。
俺は正解を知ってるが、回答者バトルのために敢えて書かない。
わかるモン居たら書いてみろ。
821 :
名無しさん@お腹いっぱい。:2006/03/19(日) 09:50:16
エレガントなずっこんばっこんスクリプトまだー?
824 :
名無しさん@お腹いっぱい。:2006/03/20(月) 12:00:36
>>818 私英語苦手・・・・じゃなくて、日本語苦手。
ほげ
ぴよ
>>824 アンカー先間違えてる?
818にそう言っても話が繋がらないのだが・・
つながらなくて困るようなスレの流れじゃないし。
829 :
名無しさん@お腹いっぱい。:2006/03/20(月) 21:22:48
質問です。
カレントディレクトリ以下(サブディレクトリ含)にある.c,.cc,.cppのファイル数を知りたいのですが、どうしたらよいのでしょうか。
find ./* -name *.c | wc -l
をそれぞれの拡張子で、では無く、一発で3種類のファイル数を求める方法を知りたいです。
後、
./script < inputfile
と入力した時、inputfileの中身をscript内で使うにはどうしたらよいでしょうか。
./script 1 2
とやると$1に1、というようになりますが、ファイルに
1
2
とあり、そのファイルを入力として渡す時はどのようにして1や2を得るのでしょうか。
>>829 Q1 何故、findの機能を調べようとしないんだ?
Q2 何故、そのスクリプトエンジンの機能を調べようとしないんだ?
またman読めよらしいな
>>830,831
そういうお答えはご遠慮願います。
ちゃんとわかる方のみ、ご回答よろしくお願いします。
>>829 一問目は、man shかman bashして、
パス名展開(Pathname Expantion) のところ読んでね。
>>833 >>829 の1問目は、「一発で3種類のファイル数を(それぞれ)求める方法」
らしいから、それは shの「パス名展開」を読んでも解決にならないだろ。
また「知ったかman厨」か。