我有一份来自原始和重复驱动器的文件列表,包括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
请帮忙。
答案 0 :(得分:3)
这可能对您有用:
sort orginal_list.txt duplicate_list.txt | uniq -u
答案 1 :(得分:0)
我想到的第一件事就是使用rsync
来尽可能快地复制丢失的文件。它真的有奇效。
如果没有,您可以先对两个文件进行排序,以确定它们的不同之处。您可以使用一些paste
技巧来放置并排差异,甚至可以使用diff
并排输出。在订购文件时,我认为diff
可以轻松识别已添加的行。