0

Mac OSXでfdupesを使用して、ディレクトリから重複するテキストファイルを削除しようとしています。すでに多数の重複が削除されています。

私が今抱えている問題は、残っているファイルの多くが重複していることです。ただし、ファイルの1つでは、ファイル名が最初の行で、その後に空の行が続き、その後にテキストが続きます。

そこで、ファイル名が上部に繰り返されているすべてのファイルを見つけて、これと次の空白行を削除して、fdupesがそれらを重複として認識できるようにします。これにより、fdupesを使用してそれらを解析できるようになります。

例:

file001.txt:

test 123
test

file002.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はファイル全体を一度に読み取ることができるため、1つの正規表現で複数の行を照合できます。

スイッチは-iインプレース編集を行います。バックアップを保持するためにサフィックスを追加することもできますが、多くのファイルで使用する場合は実用的でない場合があります。ただし、-iすべてが希望どおりに実行され、標準出力に出力されることが確実になるまで、スイッチを使用しないことをお勧めします。

于 2013-02-15T15:29:06.280 に答える