Я использую fdupes
для поиска дубликатов файлов в своей файловой системе, однако мне часто хочется либо найти дубликаты конкретный файл, либо найти дубликаты файлов в определенном каталоге.
Чтобы уточнить, если я позвоню
fdupes dir1 dir2
Результатом будут все дубликаты файлов, найденные в собранном наборе файлов в dir1
и dir2
. Тем не менее, я действительно хотел бы иметь возможность сделать что-то вроде
fdupes-alternative file dir
чтобы найти дубликаты file
в dir
, не беспокоясь о дублирующихся файлах в dir
. Или даже иметь возможность что-то вроде
fdupes-alternative dir1 dir2
и проверить, дублируются ли какие-либо файлы в dir1
в dir2
, опять же, игнорируя дубликаты, если они все находятся в dir1
или dir2
.
Существуют ли какие-либо инструменты, которые делают такие вещи, или какой-либо простой способ сделать такие вещи?
Вы можете фильтровать группы по интересующему вас содержимому.
Предполагая fdupes
выходной формат строки на файл плюс пустая строка для разделения групп, если вас интересует файл, отфильтруйте группы, которые содержат имя файла в виде строки. Например с awk:
fdupes file dir |\
awk -v F=file '
BEGIN { FS = "\n"; RS = "\n\n" }
{
for (i=NF; i; i--)
if ($i==F) {
printf("%s%s", x++?RS:"", $0)
break
}
}
'
Если вас интересует каталог, отфильтруйте группы, содержащие строки, начинающиеся с этого каталога. Например, снова с «awk»:
fdupes dir1 dir2 |\
awk -v D=dir1/ '
BEGIN { FS = "\n"; RS = "\n\n" }
{
for (i=NF; i; i--)
if (index($i,D)==1) {
printf("%s%s, x++?RS:"", $0
break
}
}
Ваш вопрос немного краток, и его можно буквально понимать по-разному. Например, вы считаете ссылки дубликатами? Или просто файлы с одинаковыми хэшами? В случае с жесткими ссылками, если вы хотите удалить одну (очевидное последующее действие), что вы предпримете?