
linuxのシェルでファイル名に先月以前の日付があるのを削除したい
bashでcshellでも良いのですが、
/pgsql/data/pg_log/
の下にたまったlog
postgresql-2010-04-01-*.log
postgresql-2010-03-31-*.log
postgresql-2010-03-30-*.log
などのうち、
先月以前の日付があるのを削除するスクリプトを作りたいのですが、上手くいきません。
ls postgresql*.logから全件数回して、if文で比較しようとしましたが、判定がうまくいきません。
何がネックになっているかと言いますと、
文字列「postgresql-2010-04-01-*.log」
文字列「postgresql-2010-04」をif文で比較すると、=の判定はできますが、
>や<で判定すると、全てthenになってしまいます。
文字の大小比較はできないようですね?
また、
「postgresql-2010-04-01-*.log」
から、12文字目から7文字抜き出したいのですが、
substrのような事も出来るのかどうなのか分かりません。
bashでこういう事をするのはあまり向いていないのでしょうか?
cshellとどちらが向いているでしょうか?
あるいはパールなんかを使った方が良いのでしょうか?
当面のやりたい事をクリアする方法、および、ツールの選定についてご教授下さい。
以上、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
ファイル名でなく、タイムスタンプが30日以前で削除するなら、#1の方が書いたようにfindを使うのが良いです。
find /pgsql/data/pg_log/ -name '*.log' -mtime +30 | xargs -r rm
> < の判定が失敗したのは、
if [ $file < postgresql-2010-04 ] のように書いたのではありませんか? < や > はそのまま書くとリダイレクトの記号なので、if [ $file '<' postgresql-2010-04 ] のように書かないといけません。
>12文字目から7文字抜き出したいのですが、
${file:11:7} のように書きます。先頭を0と数えるので12文字目は11になります。
>bashでこういう事をするのはあまり向いていないのでしょうか?cshellとどちらが向いているでしょうか?あるいはパールなんかを使った方が良いのでしょうか?
cshよりbashのほうが高機能です。この程度であれば、シェルで十分です。
YYYYMM=`date +%Y-%m`
cd /pgsql/data/pg_log/
for file in postgresql-*.log
do if [ $file '<' postgresql-$YYYYMM ];then rm $file;fi
done
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stable diffusionのエラー
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
CSVファイルの行と列のセルって...
-
パイプを用いたプロセス間通信...
-
C言語の勉強しています。すみま...
-
ポインター引数の関数でコンパ...
-
c言語 配列から数字だけをint型...
-
C#でのswitch文
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
Line Inputにて改行があっても...
-
半角、全角の判別方法
-
全角半角を調べるライブラリ関...
-
この関数はどのプログラミング...
-
utf-8でメールを送信すると件名...
-
COleDateTime とtime_t
-
ビットからバイトへの変換
-
Excel 1セル当りの文字数が2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
C言語の勉強しています。すみま...
-
C言語についてです! 同じ年の...
-
ポインター引数の関数でコンパ...
-
c言語での wavファイルの編集(...
-
C#でのswitch文
-
ビットデータのチェック方法
-
txtファイルを読み込んで表示関...
-
int型(2バイト)データの分割
-
Excel VBA グラフ作成のとき...
-
'dataType' 引数を Null にする...
-
Cのプログラムがどうしても動き...
-
C言語について
-
matlabでのRRI検出
-
【VBA】複数条件の検索
-
VBA セルの値入力について
-
Nextの次に、入力した数値の中...
-
System.Collections.ArrayList ...
-
PINVOKEで構造体配列をマーシャ...
おすすめ情報