Нет необходимости в командах bash, когда вы используете awk
, попробуйте это:
awk -F'|' 'NF==24 {print FILENAME}' /root/TB_MOVIL_CDR/incorrect_files/*
Это будет проверять, равно ли число полей в каждой строке 24 файла, и находит ли оно строкус 24 полями, он напечатает имя файла.Примечание: если есть несколько файлов с 24 полями, он печатает имя файла несколько раз.Этого можно избежать при необходимости.
Вы можете использовать это gnu awk
для печати имени файла только один раз для каждого файла с 24 полями (gnu из-за функции ENDFILE):
awk -F'|' 'NF==24 {f=1} ENDFILE {if (f) print FILENAME;f=0}' /root/TB_MOVIL_CDR/incorrect_files/*
Короче gnu awk
, которые печатают имя файла один раз для каждого файла.
awk -F'|' 'NF==24 {print FILENAME;nextfile}' /root/TB_MOVIL_CDR/incorrect_files/*