我的目录中有一些文件/应用程序/我/all_off哪个文件名如下:
- 访问日志
- 报警批次
- 警报服务根
- db_wrapper_access_log
- db_wrapper_api_service
- 莫队列工作
- mt_push_api_service
- mtqueue 作业
- nbp_请求_处理程序
- 配置文件_api_服务
- 促销 API 服务
- 队列服务根
然后,它用扩展名格式化文件。日志他们每天生成的格式为: xxxx.log.20190101
因此,我想归档并移动所有这些文件(最后生成的文件是在前一天)进入/应用程序/我/all_off/备份/每天中午 12 点。但我想备份特定目录中的文件(根据他们的名字)例如:
/app/me/all_off/backup/access_log/access_log.log.2019010
我的情况有解决问题的办法吗?
我正在使用 Shellscript 来存档并移动该文件,但它只是移入/应用程序/我/all_off/备份/。下面是我的 Shellscript :
(#!/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 {日志路径}
对于 *.gz 中的 i;执行 mv ${i} ${logPathMove};完毕
答案1
确切地弄清楚你想做什么有点困难。不过,这里有一个帮助调试 shell 脚本的通用技巧:将此行放在脚本的开头:
set -x
所以如果脚本是:
b=1
echo a $b
运行它会产生
a 1
$
而如果你做到了
set -x
b=1
echo a $b
它产生
+ b=1
+ echo a 1
a 1
$
换句话说,您将看到正在执行哪些命令以及变量替换和输出。