• ベストアンサー

unixの検索方法について

unix初心者です。 例として、 「YYYYMMDD」のファイルがあるとします。 「YYYY'01-05'DD」みたいに1月~5月までの情報だけをcatしたい場合、どうしたらよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.2

findを使ってみてはいかがでしょう。ご質問の例なら下のような感じで。 find . -name '[12][0-9][0-9][0-9]0[1-5][0-3][0-9]' -exec cat {} \;

kikko-mann
質問者

お礼

[-exec cat {} \;] 最後の↑の部分が何をしているのかわかりませんでしたが、 uxixの括弧の使い方を勉強して、YYYY[1-5]DDでうまくいきました。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

検索…なんですか? 使っているシェルにもよるんじゃないでしょうか? bashなら… cat YYYY{01,02,03,04,05}DD みたいな方法も採れるかと思いますが……。

関連するQ&A

  • DATETIME型からUNIX時間を求める方法

    現在、MYSQL、DATETIME型 YYYY-MM-DD HH:MM:SS からUNIX時間を求める際に、気軽に質問出来る詳しい方が知り合いにおらずPHP学習中で知識が乏しいため、YYY-MM-DD HH:MM:SS をスペースで分割、をハイフンで分割、HH:MM:SSをコロンで分割、その後、mktimeに当てはめてUNIX時間を求めています。 他に簡単にDATETIME型からUNIXTIME求める関数などがありましたらご教示頂けましたら嬉しいです。 それとも、計算が必要な日時をMYSQLに格納する場合はINSERTする場合にUNIX時間でINSERTし、表示が必要な場合に、DATE関数等で日時として表示する方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • TIMESTAMPを検索するフォームを設けたい

    HTMLで上下にフレーム分割し、 ・上段が検索フォーム ・下段が問い合わせ結果のリストアップ、 という構造があるのですが、MYTIME (timestamp(14))という フィールドの検索フォームはどのように設けるのが一般的でしょうか。 例えば、 ・7月1日以降にデータが更新されたレコードのみ抽出、 ・今日の12:00以降に更新されたレコードのみ抽出、のように用いたいです。 MYTIMEには、 20051221080904 20060701194647 などのレコードがあります。 timestampでなく、date型なら、↓のように、 yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で問い合わせができることを経験してます。 select myfield,mytime from myfield where mytime >= '20060714' select myfield,mytime from myfield where mytime >= '2006/07/14' select myfield,mytime from myfield where mytime >= '2006-07-14' そのとき、検索フォームは <input type="text" name="date_more" maxlength="10" title="yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で入力">以降 <input type="text" name="date_less" maxlength="10" title="yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で入力">以前 ・・などとしました。 今回のTIMESTAMP型も、↑と同じでいけますか? 年月日と時分秒は分割したほうがよかったりするのでしょうか? そうすると、SQL文に渡す前に、年月日.時分秒 のようにくっ付けて WHERE条件に加えることになりますよね? 標準的な方法をご教示ください。

    • ベストアンサー
    • PHP
  • Exelで日付を変換

    YYYY年MM月DD日 というデータを YYYYMMDDに変換するにはどの様な方法がありますでしょうか。 MMの部分はMの場合もあります。。 お知恵を拝借させてください。

  • 【ACCESS】クエリによる正規表現の基本的書き方

    いつもお世話になっております。 ACCESSのクエリで、下記8パターンにマッチする文字列を yyyyMMddの形で抽出する方法が判りません。 例でも構わないので、ご教示いただけないでしょうか。  (1)yyyyMMdd       (数字は半角)  (2)yyyy年M月dd日   (数字は半角)  (3)yyyy年MM月dd日 (数字は全角)  (4)yyyy年M月dd日   (数字は全角)  (5)yyyy年MM月dd日  (数字は半角)  (6)yyyy年M月dd (数字は半角)  (7)yyyy/MM/dd (数字は全角)  (8)yyyy/MM/dd      (数字は半角)   ※12月32日等の日付不正は対象外 数字の全・半角は区別しなくても抽出可能と考えています。 ただ、そもそも、正規表現の基本的な書き方が判らず。。 グループ化させるための括弧「()」や、論理和の「|」を使うと 抽出できませんでした。 accessでは利用不可なのでしょうか。。 一応、私の作成したクエリを掲載致します。 テーブルaからdate列を抽出します。上記8パターンにマッチする場合は、yyyyMMdd形式で、いずれにもマッチしなければ空白を返させたいと思います。 SELECT IIf (a.date Like '[1-9][0-9][0-9][0-9](0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])', a.date, IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '年', ''), '月', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"), '' ) ) ) ) ) ) ) ) FROM a 以上、何卒よろしくお願いいたします。

  • 秀丸の正規表現を使った検索方法

    お世話になります。 秀丸エディタを使って、日付形式の文字列を検索し、「日」が抜けている箇所をリストアップしたいのですが、どうやれば実現できるか分かりません。ヘルプで「正規表現」を見つけて何とかできそうかな・・?思い質問させて頂きました。ご教授下さい!!(例:yyyy/mm/dd,もしくは"yyyy/m/d"とあるべきだが、"yyyy/mm"もしくは"yyyy/m"しかない場合)

  • 間接操作のレベルとは

    C言語初心者です。 現在、yyyymmdd型での入力のテストを作っています。 しかし 「'convert_time':'tm *(char *)'は'int ()'と間接操作のレベルが異なります。」 とエラー表示が出てコンパイルできません。 プログラムは以下に示すとおりです。 #include <stdio.h> #include <time.h> char jikan; char a; int main (void){ printf("yyyymmdd型で入力してください"); scanf("%c",jikan); a = convert_time(jikan); printf("%s",a); } struct tm* convert_time(char* yyyymmdd){ struct tm* time; char yyyy[5]; char mm[3]; char dd[2]; strncpy(yyyy, yyyymmdd, 4); yyyy[5] = '\0'; mm[0] = yyyymmdd[4]; mm[1] = yyyymmdd[5]; mm[2] = '\0'; dd[0] = yyyymmdd[6]; dd[1] = yyyymmdd[7]; time = malloc(sizeof(struct tm)); time->tm_sec = 0; time->tm_min = 0; time->tm_hour = 0; time->tm_mday = atoi(dd); time->tm_mon = atoi(mm) - 1; time->tm_year = atoi(yyyy) - 1900; return time; } ご回答よろしくお願い致します。

  • 日付をVARCHAR2型でYYYYMMDDと表示したい

    DATE型(YYYY/MM/DD HH24:MI:SS)の値を取り出し、 VARCHAR2(8)型の文字列YYYYMMDDにしたいと思っています。 TO_CHAR(DATE型,'YYYYMMDD')としても、YY-MM-DDと表示されてしまいます。 YYYYMMDDと文字型で表示させるにはどうすればよいのでしょうか。 宜しくお願い致します。

  • C#について

    (1)YYYYMMDDの形式で入力させるようにしたいのですがどうすればいいですか?? (2)このデータをYYYY/MM/DD形式に変更するにはどうすればいいでしょうか?? よろしくお願いします

  • unixでファイルの中身をコピーしたらサイズが変わりました・・・

    すいません。UNIX初心者です。 unixでAというファイルをcatコマンドで全部表示させ全コピーし 別のウィンドウにviで貼り付け、Bというファイルを作ったのですが 何故かファイルサイズが変わってしまいました。 cp -pでは変わらないのですが・・・ sdiffでAとBを比較したら何も差分はなかったのですが、 diffで比較すると一部を除いて差分が出てきたのですが、見た目どこに差分があるのかわかりません。スペースか何かか?と思ったのですが、肉眼で確認する限り違いがあるようには思えません。 unixの端末からftpでwindowsの端末にファイルを転送したときも同じようにファイルサイズが変わってしまいました。。。 二回目やったら何故かファイルサイズ変わらず成功しましたが。 すいません、考えられる可能性を教えていただけますでしょうか

  • Excelの関数でこんなことは出来ませんでしょうか?

    こんにちは。 エクセルの関数を使って 年月日(yyyy年mm月dd日)を数字8桁の日付(yyyymmdd)に 変換する方法を教えてください。 たとえば「2007年3月2日」は、「20070302」となります。 よろしくお願い致します。

専門家に質問してみよう