检查某个目录下是否存在文件列表中更改日期的文件 printmissing

检查某个目录下是否存在文件列表中更改日期的文件 printmissing

所以我有一个如下所示的列表文件:

SOURCE_FILE|SOURCE_SYSTEM|DELIVERY_FREQUENCY|IMPORT_DIRECTORY|PROCESSING_BLOCKS|DEPENDENT_DELIVERY_CODES|AFFECTED_TARGET_SYSTEMS

例子:

SUBMIT_303_EXOTICIIBOND_YYYYMMDD_V01_T23.xml.gz|STF|DAILY|fromSTF|FLOWS|SMTMM|CFP;
YYYYMMDD_PES_TER_99_99.tar.gz|PALO|MONTHLY|fromPO|IRBDD|PES_TER|CFP

和一个包含文件的目录:

SUBMIT_303_EXOTICIIBOND_20220720_V01_T23.xml.gz;
20220720_PES_TER_99_99.tar.gz).

我需要检查列表中的文件是否确实存在,如果不存在,则将其写入文件。

我能够创建脚本来整理我需要的文件名, cat file_path | grep "DAILY" | cut -d '|' -f1因此它只是文件名。

!-f关于如何根据每日变化的日期实现输出有什么建议吗?

答案1

我一直在深入研究最近:

gawk -F'|' '
  @load "filefuncs"
  $3 == "DAILY" {
    result = stat($1, statdata)
    if (result != 0)
      print $1
  }
' file.list > files.not.found

或者,用一行字表示:

gawk -l filefuncs -F'|' '$3 == "DAILY" && stat($1, data) {print $1}' file.list > files.not.found

参考号https://www.gnu.org/software/gawk/manual/html_node/Extension-Sample-File-Functions.html

相关内容