我正在尝试在Mac OSX中使用fdupes从目录中删除重复的文本文件。它已经删除了一堆重复。
我现在遇到的问题是,在剩下的问题中,很多都是重复的,除了在其中一个文件中,文件名是第一行,后面是空行,后跟文本。
所以,我想找到所有在顶部重复文件名的文件,然后剥去这个和下面的空白行,这样fdupes就会将它们识别为重复项。这将允许我使用fdupes来解析它们。
示例:
file001.txt:
test 123
test
file002.001.txt:
file002.001.txt
test 123
test
最好的方法是什么?
答案 0 :(得分:2)
也许是这样的
perl -0777 -pi -e 's#\Q$ARGV\E$/{2}##' *.txt
$ARGV
包含文件名。 $/
是您的输入记录分隔符 - 您可能需要使用\n
或任何行结尾。由于$/
包含斜杠,因此我们将s///
的分隔符更改为其他内容,在本例中为#
。 \Q ... \E
转义是为了使文件名中的某些元字符不会搞砸任何内容。
-0777
开关使perl一次读取整个文件,这样我们就可以在一个正则表达式中匹配多行。
-i
开关将进行就地编辑。您可以添加后缀以保留备份,但在许多文件上使用时可能不实用。但是,我建议你不要使用-i
开关,直到你确定一切都按照你想要的方式进行,然后打印到标准输出。