|
前にも同じ質問をしたのですが、 findの検索で、指定ディレクトリ(カレントディレクトリ)内の ファイルだけを検索し、-mtimeを指定して、30日前のファイルを 削除しようとしています。 配下のディレクトリを検索しないよう、-prune を指定して、まずは、 以下のようにしたのですが、”*.csv”以外が表示されていまいます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print と実行すると、 カレントディレクトリと、「*.csv」以外のファイルが表示されます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 と実行すると、 表示されるのですが、どこのディレクトリを検査した結果かわからない状態でして、 確認と実際は、rm を指定してファイルを削除するで、「-exec ls -l {} \;」 をして表示してみたのですが、 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -exec ls -l {} \; と実行すると、 何も表示されません。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -print と実行すると、 何も表示されません。 正しく、結果が表示されるように、 最終的には、30日前とか、90日前のファイルが削除できるように したいのですが、どのようにすればよいか、 教えてください。 |
|
>>4836 べた > find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print > と実行すると、 > カレントディレクトリと、「*.csv」以外のファイルが表示されます。 この結果がすでにマズいんですよね? 前回のわたしの回答 >>4763 68user は的外れだったような気がします。最終的には以下のようになるのではないかと思います。 % find /home/DATA/backup -name '*.csv' -mtime +30 -exec ls -l {} \; -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune 構造としては ・[ファイル名が *.csv] AND [mtime が +30] AND [-exec ls -l] OR ・[ファイル名が everyday] AND [-prune] OR ・[ファイル名が monthly] AND [-prune] OR (略) となります。 ただし -exec や -prune は常に真で、コマンドを実行する・ディレクトリを下降しない という副作用を発生させるのが主目的ですので、より平易に書くと ・[ファイル名が *.csv] AND [mtime が +30] なら [-exec ls -l] を実行 OR ・[ファイル名が everyday] なら [-prune] で下降抑止 OR ・[ファイル名が monthly] なら [-prune] で下降抑止 OR (略) となります。なお、ここでの OR は、左辺が真なら右辺は評価しない、 という意味です。また、OR の各要素の順序を入れ替えても、このケース では問題ありません (*.csv と everyday が両方真になることはないので)。 典型的な -prune の使い方をまとめると以下のようになると考えます。 - 特定のディレクトリ以外について何か (-print) を行う ⇒ find . -name hoge -prune -o -print - 特定のパターンのファイルに何か (-ls) を行うが、特定ディレクトリ以下は除外する ⇒ find . -name \*.csv -ls -o -name hoge -prune - 特定のパターンのファイルに何か (-print) を行うが、特定ディレクトリだけは 除外する。ただし特定のパターンにも特定のディレクトリにも一致しない場合は、 別の何かを行う (-ls)。 ⇒ find . -name \*.csv -print -o -name hoge -prune -o -ls |
|
>>4837 68user ありがとうございます。 返事遅れてすみません。 一度、内容を読んで、確認してみます。 それで、再度、質問します。 |
|
>>4837 68user ありがとうございます。 期待した結果が得られました。 |
|
はじめまして。 以下のページを見て質問させていただきます。 http://x68000.q-e-d.net/~68user/net/http-1.html telnet(WindowsXPに標準でついていたものです)で、 % telnet www.cs.gunma-u.ac.jp 80 とコマンドを打っても、コマンドが無効です、と出てしまいます。 ここで詰まってしまって、先へ進めないでいます。 helpを見てみて、openかなと思ったのですが、それでも接続できない状況です。 googleで検索してもみたのですが、要領を得ませんでした・・・ 何か解決法はないでしょうか? プロバイダからは、特別なproxyを使わないと駄目ですとは言われていません。 よろしくお願いします。 |
|
>>4840 まるこ telnet の起動の仕方を勘違いしているように見えます。 スタート > すべてのプログラム > アクセサリ で コマンド プロンプト を起動します。するとウィンドウが開き Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\user> などと表示されるはずです。 ここで telnet www.cs.gunma-u.ac.jp 80 とタイプしてください。 http://x68000.q-e-d.net/~68user/net/win-telnet.html にあるとおりエコーバックはされませんが、 GET / HTTP/1.0(Enter) (Enter) とすると取得した HTML が表示されるはずです。「(Enter)」は XP であれば普通に Enter キー押下でいけると思います。 |
|
はじめまして。 以下のページを参考にさせていただきまして、質問させていただきます。 http://x68000.q-e-d.net/~68user/webcgi/char-code-2.html 以下のように機種依存文字のチェックをさせてみたところ 「丁目」という文字がC3FA CCDCとなり、FACCが90区のチェックに 引っかかってしまいました。 $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE]", $check)) { こういった場合はどのように対処したらよいでしょうか。 よろしくお願いします。 |
|
>>4842 yuki そのページでも紹介していますが、文字単位でマッチさせるために http://www.din.or.jp/~ohzaki/perl.htm#JP_Match という工夫をしています。 PHP であれば mb 系の関数を使えば文字単位で切り出せると思いますが、 いわゆる機種依存文字に対応しているかどうかわからないのでまずは 試してみてください。対応していなければ、上記のようなやり方で 1文字ずつ取り出す必要があるかもしれません。 |
|
>>4843 68user様 ご助言ありがとうございます。 ご案内いただいたページを参考にして以下のように記述したところ 想定通りに動くことを確認できました。 $ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("^($ascii|$twoBytes|$threeBytes)*(\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE])", $check)) { echo "マッチしました。\n"; mb系は私の未熟さゆえかうまく動作しませんでした…。 68user様、ありがとうございました。 |
|
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update freebsd-updateでぐぐると上位に引っかかり、拝見しました。 「あくまで 5.1-STABLEを追っかけている」という記述がありますが、 おっかけている(いた)のは'5.1 security fix branch'(RELENG_5_1)で、 5.1-STABLEというブランチは存在しないです。 また'5-STABLE'も5.1-RELEASEをブランチした直後以外は 5.1相当ではなかったわけなので、やはり5.1-STABLEという記述は 修正されたほうが良いかと思います。 |
|
>>4844 yuki 何度も申し訳ありません。 4844の記述ではうまく動かないですね…。 機種依存文字が文頭にある場合のみ動作して 2文字目以降にある場合にはマッチしてくれないです。 正規表現についてもう少し勉強してきます。 |
|
>>4846 yuki ダメですかねぇ? あっているような気がしますが。 $_POST['adrs']・$check のデータを明示いただければ何かしら回答できるかもしれません。 >>4845 2323 よく理解していないので確認させていただきたいのですが、 「あくまで 5.1-STABLE を追っかけているに過ぎない」 を 「あくまで '5.1 security fix branch' (RELENG_5_1) を追っかけているに過ぎない」 とすれば正確な表現と言えるでしょうか。 |
|
はじめまして。 突然ですが、ご教授ください。 私は今、大学4年生で卒業研究をしているのですが、ネットワークプログラムを作る必要が出てきてしまいました。 ですが、私はプログラミングは全くの初心者で、どの言語を使えば良いのか、何から始めればいいのかもよく分かりません。 どなたかアドバイスや、参考となりそうなプログラムやサイトを教えて頂けませんか? OSはKNOPPIXで、アドホックモード(OLSR)での動画の転送をしたいです。 転送さえできればいいとのことなので、プログラム自体は簡単なものでいいようです。 場違いな質問かもしれませんがよろしくお願いいたします。 |
|
>>4848 yino 残念ながら聞いた事もないOSですので、お力になれません。 ただ、この様な場合、ひたすら検索サイトでキーワードを入れて検索してみてはいかがですか? 就職しても、この辺りは変わりません。 まずは、片っ端から検索して自分の目的としている情報が載っているサイトを探してみましょう。 |
|
>>4849 バンガード OLSR はプロトコルのようです。 >>4848 yino わたしなら 1. まわりに言語の有識者がいるか 2. その言語向けのネットワークプログラミング関連の書籍が出版されているか 3. ネットワークプログラミング向きか 4. プログラミング初心者が扱いやすい言語か という観点で考えます。 1 は、まわりを見渡してください (Java が多いのではないかと想像しますが)。 これが最重要だと思います。 2 は、Java が一番、次点が Perl でしょうか。PHP・Ruby はこの点は弱い。 3 は、本質的にはどの言語でも同じでしょうが、PHP などは無駄にハマりやすそうな 気がします。 4 は、まぁ Java ではないかと。 個人的には、Java がイチオシ、次点が Perl です (自分が書くなら Perl か Ruby)。 |
|
>>4850 バンガードさん、 >>4849 68userさん ありがとうございました。 とりあえずは周りの人から話を聞いてみたいと思います。 あとはJavaの本を読んでいきたいと思います。 また壁にあたったときはここに来ると思いますので、よろしくお願いします。 |