私のディレクトリにいくつかのファイルがあります/applications/私/all_offファイル名は次のとおりです。
- アクセスログ
- アラーム配置
- 警告サービスルート
- db_wrapper_access_log
- db_wrapper_api_service
- キュー操作なし
- mt_push_api_service
- mtqueue 操作
- nbp_request_handler
- 構成 file_api_service
- プロモーション API サービス
- キューサービスルート
次に、拡張子としてファイル形式を指定します。。丸太毎日生成される形式はxxxx.log.20190101です。
だから、これらすべてのファイルをアーカイブして移動したいと思います。(最後に生成されたファイルは前日でした)入力する/applications/me/all_off/backup/毎日正午12時。しかし、特定のディレクトリのファイルをバックアップしたいです。(名前に基づいて)たとえば、次のようになります。
/app/me/all_off/backup/access_log/access_log.log.2019010
私の状況に対する解決策はありますか?
ファイルをアーカイブして移動するためにShellscriptを使用していますが、ファイルは中にのみ入ります。/applications/me/all_off/backup/。以下は私のシェルスクリプトです:
(#!/bin/bash ----> "(" 注)
日付1=
date -d "yesterday" +%Y%m%d
日付2=
date -d "yesterday" +%Y-%m-%d
logPathMove=$logPath"バックアップ/"
logPath='/app/me/all_off/'
すべて =
ls -ltrh *log* *log | awk -F ' ' '{print$9}' | awk -F '.' '{print$1}' | sort | uniq -c | awk -F ' ' '{print$2}'
CD ${logPath}
gzip -9 *.${date1}
gzip -9 *.${date1}.log -------->他の形式のファイル名
gzip -9 *log.${date2}.log --------> 他の形式のファイル名
CD{ログパス}
i の場合 *.gz 実行 mv ${i} ${logPathMove};
答え1
自分がやりたいことが何なのか正確に把握するのは少し難しいです。ただし、シェルスクリプトをデバッグするのに役立つ一般的なヒントは次のとおりです。スクリプトの先頭に次の行を置きます。
set -x
したがって、スクリプトが次のような場合:
b=1
echo a $b
実行すると生成されます。
a 1
$
そして、もしそうであれば
set -x
b=1
echo a $b
それは作り出す
+ b=1
+ echo a 1
a 1
$
つまり、変数の置換と出力とともに、どのコマンドが実行されているかを確認できます。