查找命令来获取名称中包含日期部分的文件(脚本中包含日期的 ($Y 变量)
Y=(date -d "1 day ago" "+%Y-%m-%d")
find /log/bssuser/CDR/Postpaid_CDR_Log/ -type f -name '*log_LOG_POSTPAID_CDR'*$Y*.log | grep -H '^ORA' 'log_LOG_POSTPAID_CDR'*$Y*.log
运行此命令时出现以下错误:
grep: log_LOG_POSTPAID_CDR*date*.log: No such file or directory
该命令无法查看,$Y
因为变量的日期是昨天
EX 为文件之一的名称:
log_LOG_POSTPAID_CDR-2023-10-16_PTT_CDR.1066.20231010000509.csv_KODIAK-100.log
答案1
正如 Jos 和 sudodus 指出的那样,存在一些小错误和拼写错误。
首先,您需要使用命令替换$()
来使变量起作用。
其次,在命令中使用双引号内的变量find
。
第三,如果您要将文件输出直接通过管道传输到 grep 命令(在您找到的文件内进行 grep),您应该使用xargs
。
所以你想要的应该是这样的:
Y=$(date -d "1 day ago" "+%Y-%m-%d")
find /log/bssuser/CDR/Postpaid_CDR_Log/ -type f -name "*log_LOG_POSTPAID_CDR*$Y*.log" | xargs grep -H '^ORA'