我有一個帶有文件名列表的文件sortedfile.txt
。我正在尋找另一個文件,ngfilelist.txt
,其中包含sortedfile.txt
中所有重複文件的文件列表。使用Bash For Loop來搜索唯一行的文件
我使用這個命令
for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done
我應該在這正確嗎?
我有一個帶有文件名列表的文件sortedfile.txt
。我正在尋找另一個文件,ngfilelist.txt
,其中包含sortedfile.txt
中所有重複文件的文件列表。使用Bash For Loop來搜索唯一行的文件
我使用這個命令
for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done
我應該在這正確嗎?
我會做這樣的事情:
cat sortedfiles.txt | xargs -n1 -i{} grep '^{}$' ngfilelist.txt
而不是使用一個for
循環,我覺得更容易使用xargs
在sortedfiles.txt
運行,每一個線對grep
ngfilelist.txt
。輸出是在兩個文件中找到的文件名列表。
請注意,^
和$
僅用於匹配完整的文件名,因爲可能部分匹配不被視爲您的問題的有效結果。
這可能會爲你工作:
awk 'FNR==NR{f[$1]++;next}$1 in f && f[$1]>1{print}' sortedfiles.txt ngfilelist.txt
我相信'cat'應該是'我的問題的uniq -d',但是這看起來像一個解決方案。我已經確定它實際上是Cygwin,而不是我的命令,它工作不正常。 – 2012-01-10 19:33:21