
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のエラー
-
int型(2バイト)データの分割
-
Cプログラムがどうしても動きま...
-
C#でのswitch文
-
printfの%eで指数部分の桁数を...
-
GETメソッドとPOSTメソ...
-
エクセルで2byte文字を含むセル...
-
Console.writeLineで文字化け
-
VBA 最終行のひとつしたの行に...
-
2byte文字の判定
-
【VB2005】テキストボックス内...
-
UTF-8で5~6バイトになる文字コ...
-
VB6.0でMSChartをタイマーを使...
-
ピクセル,dpiから容量(バイト...
-
自動的に改行してくれるソフト
-
1KBが1024byteな理由
-
IEレジストリのSavedLegacySe...
-
ExcelVBAで、コメントのサイズ...
-
CGIを勉強しています。¥n(改...
-
コードに対する疑問(eucコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
printfの%eで指数部分の桁数を...
-
stable diffusionのエラー
-
【Excel VBA】10進数を2進数に...
-
ポインター引数の関数でコンパ...
-
matlabでのRRI検出
-
C#でのswitch文
-
int型(2バイト)データの分割
-
C言語 ファイル内のデータと入...
-
'dataType' 引数を Null にする...
-
RegQueryValueExでの2バイト文字
-
iアプリ jamファイルの動的な出力
-
[error] [client ---- ] Argument
-
EOM間にperl文を作成したい
-
平滑化フィルタ
-
任意な項目のソート
-
変数の書き方
-
Cプログラムがどうしても動きま...
-
hiddenを使ったセッション
-
機械受注は?
-
チェックボックスの値だけが受...
おすすめ情報