1

我有一个来自原始驱动器和复制驱动器的文件列表,分别由 985257 行和 984997 行组成。

由于行数不匹配,我确信某些文件没有重复。

为了确定哪些文件不存在,我希望使用 sed 通过从源列表中删除重复列表中存在的任何行来过滤原始文件列表。

我曾考虑在 excel 中使用匹配公式,但由于程序崩溃的行数。我认为在 sed 中使用这种方法将是一个可行的选择。

然而,到目前为止,我的方法没有成功。

 echo "Start"
 # Cat the passed argument which is the duplicate file listing
 for line in $(cat $1)
 do 
   #sed the $line variable over the larger file and remove
   #sed  "${line}/d"  LiveList.csv
   #sed -i "${line}/d"  LiveList.csv
   #sed -i '${line}' 'd'  LiveList.csv
   sed -i "s/'${line}'//" /home/listings/LiveList.csv
 done

有一个临时文件被创建并填充到列表文件的 103.4mb,但是列表文件本身根本没有改变。

我的另一个担忧是,由于列表是在 Windows 中创建的,因此“\”字符可能会转义字符串,导致不匹配,因此不会进行更改。

Example path:
Path,Length,Extension
Jimmy\tail\images\Jimmy\0001\0014\Text\A0\20\A056TH01-01.html,71982,.html

请帮忙。

4

2 回答 2

3

这可能对您有用:

sort orginal_list.txt duplicate_list.txt | uniq -u
于 2012-06-06T11:16:00.767 回答
0

我想到的第一件事就是rsync尽可能快地复制丢失的文件。它真的很神奇。

如果没有,您可以先对这两个文件进行排序,以确定它们的不同之处。您可以使用一些paste技巧来并排差异,甚至使用diff并排输出。订购文件时,我认为diff很容易识别添加了哪些行。

于 2012-06-06T10:04:22.713 回答