• ベストアンサー

bash: ファイル名と現在時刻との比較

bash で, ファイル名が  TIME1307658220.txt と,UNIXTIMEが含まれているファイルについてですが, `date '+%s'` などで現在時間を読み込んで,今から1時間前以内の時間が名前に含まれていれば, それらをmv で移動させたいのです. たぶん cut とか,を使って,5文字目から14文字目までを抜き出して数値化して比較しないといけないとおもうのですが,うまくいかないです. よろしくお願いいたします.(><)

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

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

こういうことかな・・・ https://ideone.com/hiO6U あんまちゃんと検証とってないんですが、適当にいじって貰えれば使えるようになるかもしれません。

kirbykirby
質問者

お礼

sholmes さんありがとうございます! older=`expr "$src" : '.*\([0-9]\{1,\}\)'` のところがうまくいかないんですが,意味が分からず改良できません.. 少し詳しく説明いただけませんか? 初心者です.すみません

関連するQ&A

  • bashでのunixtime変換について

    bashでのunixtime変換について質問です。 下記のようなunix時間と数値が記載されたテキストがあり、 unix時間を変換する必要がありました。 ※ここではunix時間のみ変換したかった # more unixtime.txt 1387875600 10 13 15 1387879200 27 19 26 1387882800 14 17 19 1387886400 22 16 14 そこで下記のように2行で変換しました。 cat unixtime.txt | awk '{print $1}' >>unix.txt cat unix.txt | awk '{print strftime("%Y-%m-%d %H:%M:%S",$1)}' >>time.txt そこで質問です。 (1)2行で実行したコマンドを1行で実行するにはどのように書けばいいのでしょうか。  ワンライナーでかっこ良く書きたい・・・・です。 (2)unixtime.txtのunix時間を変換して"%Y-%m-%d %H:%M:%S"+数値の形式とするには どのように書けばいいのでしょうか。 お手数ですが皆様のお知恵をおかしいただきたく。 よろしくお願いします。

  • bash ファイルなし判定

    現在bash scriptにおいてファイル存在判定を下記のように しています。 if [ -s "tmp.txt" ]; then (dummy=1) else echo " no [tmp.txt] file" exit fi -sでファイルがある場合のelseとしていています。 if文で直接ファイルが"ない"という判定はどのように 記載するのでしょうか?

  • 時刻の比較について。

    質問です! Perl初心者で昨日から勉強しています。 早速ですが、 あるファイルに2007/09/27 10:19:21と書かれていて、 それを読込み、現在の時刻と比較して、30分以内ならば、 文字色を赤に、30分以上ならば文字色を青にしようと 思っているのですが、比較の方法が分かりません・・・ どなたかご存知の方がおりましたら、よろしくお願い致します。

    • ベストアンサー
    • Perl
  • 日付、時刻の比較について

    こんばんは。 現在、PHP4&MySQLの環境で業務アプリを 作成しております。 DBからDATE型(20060614)、TIME型(13:00:00)の データを取得して他の文字列と比較したのですが どうしてもうまく比較できません。 日付データはdate_format関数で使用して取得し strvar関数などで型変換をして比較しています。 ちなみにechoなどで実際の値を見ても同じ値でした。 やっぱり型があっていないのでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか

    awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか。 ファイル(hoge.txt)の内容は、次の通り(全4行) 123 456 50 20 これを、bashスクリプトで計算させます。 FF=`cat hoge.txt | awk 'BEGIN {x=$2;printf ("%s, %s", (148+x*0.05), x);}'` echo "答え = ${FF}" このときの$2の値は、50です。但し、文字列として扱われているようです。 xの値を、数値として代入され、四則演算をさせるにはどうしたら良いですか? 以上、よろしくお願いします。

  • シェル ディレクトリ内検索について

    お世話になっております。 solarisでシェル作成に辺り教えてください。 あるディレクトリの新しいファイルから3つ目の ファイルを移動(mv)したいと考えているのですが 良い方法は無いでしょうか? 例 testディレクトリ内 ファイル.txt.051025 ファイル.txt.051024 ファイル.txt.051023  ←このファイルをmv処理 ファイル.txt.051022 ファイル.txt.051021 ファイル.txt.051020 ディレクトリ内のタイムスタンプで最も新しいファイルから3つ目を移動させたい場合は、どの様にしたら良いでしょうか?方法はあるのでしょうか? お願いします。

  • シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。

    シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。

  • バッチ・ファイル中で時間をファイル名に使用したいです。

    いつもお世話になっております。 バッチ・ファイルを使用して、「netstat」コマンドの結果をファイルにリダイレクトし、そのファイル名に時間を使用したいです。 いま、使用しているファイルは、「バッチファイルA」と「バッチファイルB」の2つがあります。 「バッチファイルA」は0時~9時まで、「バッチファイルB」は10時~24時までとなっています。これを、1つのファイルにまとめたいのですが、よろしくご教示をいただけませんでしょうか。 --------------------------- @「バッチファイルA」(0時~9時) set TIME_A=%TIME% set TIME_B=%TIME_A:~1,4% set TIME_B=%TIME_B::=% set FILENAME=%TIME_B% netstat -s -e >C:\Temp\%FILENAME%.txt --------------------------- --------------------------- @「バッチファイルB」(10時~24時) set TIME_A=%TIME% set TIME_B=%TIME_A:~0,5% set TIME_B=%TIME_B::=% set FILENAME=%TIME_B% netstat -s -e >C:\Temp\%FILENAME%.txt ---------------------------

  • バッチでファイル名称を時刻にしたいのですが

    Windows2000で日付と時刻のファイルネームで 保存したいのですが下記のコードでやってみたら 10:00以降ならOKだと思うんですが00:00から09:59が エラーになりそうです。 09とかが 9だけになりNGになる気がします (今、手元のPCがmeで想像の範囲ですが) 時刻の部分が二桁になるようにするにはどうすれば 良いでしょうか、お教え願います。 set DT=%date:~2,4%%date:~7,2%%date:~10,2% set TM=%time::=% set fname=%DT%_%TM%.txt 10時以降は、20040630_100000.txtみたいになるん でしょうが・・・ 9時以前は、20040630_ 90000.txtはきっとNGのような 宜しくお願いいたします。

  • bashのif文で構文エラー:

    bashで時間の比較によっての分岐を考えています。 ネットで検索しながらif構文を下記のようにしてみているのですが、 行 10: 構文エラー: 予期しないファイル終了 (EOF) です となってしまいます。 どなた様かお教え願えませんでしょうか #!/bin/bash DATA=`date +%-H%M` if [ $DATA -gt 600 ];then echo "$DATA" else echo "NG" fi 

専門家に質問してみよう