2012-01-10 43 views
0

我有一個帶有文件名列表的文件sortedfile.txt。我正在尋找另一個文件,ngfilelist.txt,其中包含sortedfile.txt中所有重複文件的文件列表。使用Bash For Loop來搜索唯一行的文件

我使用這個命令

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

我應該在這正確嗎?

回答

3

我會做這樣的事情:

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

而不是使用一個for循環,我覺得更容易使用xargssortedfiles.txt運行,每一個線對grepngfilelist.txt。輸出是在兩個文件中找到的文件名列表。

請注意,^$僅用於匹配完整的文件名,因爲可能部分匹配不被視爲您的問題的有效結果。

+0

我相信'cat'應該是'我的問題的uniq -d',但是這看起來像一個解決方案。我已經確定它實際上是Cygwin,而不是我的命令,它工作不正常。 – 2012-01-10 19:33:21

0

這可能會爲你工作:

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