Unix 基于grep的近似匹配

Unix 基于grep的近似匹配,unix,grep,matching,Unix,Grep,Matching,我需要创建一个脚本,循环遍历目录中的文件,检查文件名是否在“list.txt”中,然后处理它。我的问题是文件名是动态的,因为它有时间戳 有没有办法在unix中grep近似匹配 样品 list.txt SAMPLE_REPORT_1 SAMPLE_REPORT_2 报告文件名 SAMPLE_REPORT_1_20180416121345.csv SAMPLE_REPORT_2_20180416121645.csv 我需要检查文件名是否在list.txt中。解决方案: for f in *.cs

我需要创建一个脚本,循环遍历目录中的文件,检查文件名是否在“list.txt”中,然后处理它。我的问题是文件名是动态的,因为它有时间戳

有没有办法在unix中grep近似匹配

样品

list.txt
SAMPLE_REPORT_1
SAMPLE_REPORT_2
报告文件名

SAMPLE_REPORT_1_20180416121345.csv
SAMPLE_REPORT_2_20180416121645.csv

我需要检查文件名是否在list.txt中。解决方案:

for f in *.csv; do
    if grep -qx "${f%_*.csv}" list.txt; then
        # processing file $f 
    fi
done

很抱歉我的意思是“目录中的文件”。更正了我的问题。这很有效。谢谢我可以问一下,如果我也需要循环使用xls文件,如何处理吗?我已经在{*.csv,*.xls*}中获得了f的这部分
。我想知道如何在这一行中添加xls
grep-qx“${f%*.csv}”
我想我是用这个
grep-qx-e“${f%*.csv}”-e“${f%*.xls*}”得到的