使用Bash For循环搜索文件的唯一线

时间:2012-01-10 18:10:48

标签: bash grep uniq

我有一个文件sortedfile.txt,其中包含文件名列表。我希望搜索另一个文件ngfilelist.txt,其中包含sortedfile.txt中所有重复文件的文件列表。

我正在使用此命令

 for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done

我应该纠正什么?

2 个答案:

答案 0 :(得分:3)

我会做这样的事情:

cat sortedfiles.txt | xargs -n1 -i{} grep '^{}$' ngfilelist.txt

我没有使用for循环,而是更容易使用xargsgrep中针对sortedfiles.txt的每一行运行ngfilelist.txt。输出是两个文件中找到的文件名列表。

请注意,^$仅用于匹配完整的文件名,因为部分匹配可能不会被视为您问题的有效结果。

答案 1 :(得分:0)

这可能对您有用:

 awk 'FNR==NR{f[$1]++;next}$1 in f && f[$1]>1{print}' sortedfiles.txt ngfilelist.txt