根据csv名称列表对文件名列表进行grep

时间:2014-06-18 09:49:17

标签: shell unix csv awk

我有一个CSV文件,其中包含一行ID,数字列表。我们称该文件为ids.csv 在我有大量文件的目录中,命名为“file_123456_smth.csv”,其中123456是可以在ids csv文件中找到的id 现在,我想要实现的目标:将文件名与ids.csv中存储的ID进行比较。如果在ids.csv中找到123456,则应显示文件名。 我尝试了什么:

ls -a | xargs grep -L cat ../../ids.csv

当然,这不起作用,但可以了解我的方向。

1 个答案:

答案 0 :(得分:2)

让我们看看我是否理解正确...

$ cat ids.csv 
123
456
789

$ ls *.csv
file_123_smth.csv  file_321_smth.csv  file_789_smth.csv  ids.csv

$ ./c.sh 
123 found in file_123_smth.csv
789 found in file_789_smth.csv

其中c.sh看起来像这样:

#!/bin/bash

ID="ids.csv"

for file in *.csv
do
    if [[ $file =~ file ]]    # just do the filtering on files
    then                      # containing the actual string "file"
        id=$(cut -d_ -f2 <<< "$file")
        grep -q "$id" $ID && echo "$id found in $file"
    fi
done