0

我正在尝试在 Mac OSX 中使用 fdupes 从目录中删除重复的文本文件。它已经删除了一堆重复项。

我现在遇到的问题是,在剩下的文件中,很多都是重复的,除了在一个文件中,文件名是第一行,然后是一个空行,然后是文本。

所以,我想找到所有在顶部重复文件名的文件,然后去掉这个和下面的空行,以便 fdupes 将它们识别为重复。这将允许我使用 fdupes 来解析它们。

例子:

文件001.txt:

test 123
test

文件002.001.txt:

file002.001.txt

test 123
test

解决这个问题的最佳方法是什么?

4

1 回答 1

2

也许像这样

perl -0777 -pi -e 's#\Q$ARGV\E$/{2}##' *.txt

$ARGV包含文件名。$/是你的输入记录分隔符——你可能需要使用\n或者你的行尾是什么。由于$/包含斜线,我们将分隔符更改s///为其他内容,在本例中为#。转义是为了使文件名中的\Q ... \E某些元字符不会搞砸任何事情。

-0777开关使 perl 一次读取整个文件,以便我们可以在一个正则表达式中匹配多行。

开关将-i进行就地编辑。您可以添加后缀来保留备份,但这在用于许多文件时可能不实用。-i但是,我建议您在确定一切如您所愿并打印到标准输出之前不要使用该开关。

于 2013-02-15T15:29:06.280 回答