There are ways to find duplicate labels in complex documents that have not been mentioned in the other answers. To show how they work I will use a simple (non-complex) test case:
\documentclass{article}
\begin{document}
\section{Section 1}
\label{foo}
\section{Section 2}
\label{foo}
\end{document}
RefTeX
RefTeX can find duplicate labels with the function reftex-find-duplicate-labels
which produce a list of all duplicate labels in the document. To use it simply do M-x reftex-find-duplicate-labels
. When doing this on the file with the test case it opens a new buffer with the following content:
MULTIPLE LABELS IN CURRENT DOCUMENT:
Move point to label and type `r' to run a query-replace on the label
and its references. Type `q' to exit this buffer.
LABEL FILE
-------------------------------------------------------------
foo
~/test/test.tex
~/test/test.tex
Perl
As noted by Walt Mankowski one can use a Perl one-liner to find duplicate labels. The one-liner is as follows:
perl -nE 'say $1 if /(\\label[^}]*})/' *.tex | sort | uniq -c | sort -n
To use it open a terminal and cd
to the directory of the document you want to check for duplicate labels in and then execute the one-liner. The output for the test case is as follows:
2 \label{foo}
Relatedly you may also want to check for unused labels.