Linux поиск файлов с одинаковыми именами

Как в Linux найти и удалить дубликаты файлов

Независимо от того, пользуетесь ли вы системой Linux на своем настольном компьютере или на сервере, есть хорошие инструментальные средства, которые просканирут вашу систему на наличие дубликатов файлов и помогут вам удалить их для того, чтобы освободить место. Есть как исключительно графические средства, так и средства, работающие из командной строки.

Дубликаты файлов напрасно засоряют дисковое пространство. В конце концов, если вам действительно нужен один и тот же файл в двух разных местах, то вы всегда можете использовать символическую ссылку или жесткую ссылку, а данные хранить на диске только в одном месте.

FSlint

Пакет FSlint доступен в репозиториях программ различных дистрибутивов Linux, в том числе для Ubuntu, Debian, Fedora и Red Hat. Просто запустите ваш менеджер пакетов и установите пакет «fslint». В этой программе по умолчанию предоставляется удобный графический интерфейс, но также есть различные функции этого пакета, работающие из командной строки. Как и у многих приложений Linux, графический интерфейс пакета FSlint является лишь внешним интерфейсом, который обращается к командам Fslint, лежащим глубже.

Впрочем, пусть вас не пугает использование удобного графического интерфейса FSlint. По умолчанию, он открывается при выборе панели Duplicates (Дубликаты) и указывается путь к вашему домашнему каталогу. Все, что вам нужно сделать, это нажать на кнопку Find (Найти) и пакет FSlint найдет список дубликатов файлов, находящихся в каталогах внутри вашего домашнего каталога. Используйте кнопки для удаления тех файлов, которые вы хотите удалить, и дважды щелкните по ним для того, их просмотреть.

Обратите внимание, что по умолчанию в утилитах командной строки путь к вашему домашнему каталогу не используется, поэтому вы не можете запускать их как обычные команды. В Ubuntu, вы сможете найти их в каталоге /usr/share/fslint/fslint. Так что, если вы хотите с помощью FSlint выполнить полное сканирование в отдельном каталоге, то в Ubuntu воспользуйтесь следующими командами:

На самом деле эта команда ничего удалять не будет. Она просто выдаст список файлов-дубликатов, а все остальное — по вашему усмотрению.

fdupes

Команда fdupes обычно не устанавливается по умолчанию, но она доступна в репозиториях многих дистрибутива Linux. Это простое инструментальное средство командной строки. Вероятно, это самый удобный и быстрый инструмент, который можно использовать в случае, если вы хотите найти дубликаты файлов в среде, где у вас есть доступ только к командной строке Linux, а не к графическому интерфейсу пользователя.

Пользоваться этой командой очень просто. Просто запустите fdupes с указанием после нее пути к каталогу. Таким образом, с помощью команды fdupes /home/chris можно выдать список всех дубликатов файлов в каталоге /home/chris — но не в подкаталогах! Команда fdupes -r /home/chris будет рекурсивно выполнять поиск дубликатов файлов во всех подкаталогах внутри каталога /home/chris и выдаст их список.

Этот инструмент не будет что-либо автоматически удалять, он просто покажет вам список дубликатов файлов. Если вы захотите, то можете удалить дубликаты файлов вручную. Вы также можете запустить команду с параметром -d, который поможет вам удалить файлы. Вам будет предложено выбрать файлы, которые вы хотите сохранить.

dupeGuru , музыкальная редакция dupeGuru и редакция dupeGuru для работы с изображениями

Да, мы будем снова рекомендовать пакет dupeGuru. Это кросс-платформенный инструмент с открытым исходным кодом, который настолько полезен, что мы уже рекомендовали его для поиска дубликатов файлов в Windows и удаления дубликатов файлов в Mac .

Читайте также:  Logitech webcam c905 драйвера windows 10

Пакет dupeGuru немного менее удобен, поскольку он недоступен в репозиториях большинства дистрибутивов Linux; впрочем он есть в репозиториях Arch Linux. Тем не менее, на сайте dupeGuru предлагается вариант PPA, который позволит легко установить пакеты этой программы в Ubuntu и в дистрибутивах Linux, созданных на базе Ubuntu. Пользователи других дистрибутивов Linux могут скомпилировать его из исходных кодов.

Точно также, как и в Windows и в Mac, dupeGuru предлагается в трех различных редакциях: стандартная редакция для простого поиска дубликатов файлов, редакция, предназначенная для поиска дубликатов песен, которые, возможно, были вырезаны или иначе закодированы, и редакция, предназначенная для поиска похожих фотографий, которые были повернуты, был изменен их размер или они были изменены как-то иным образом. Вы можете получить все эти редакции на сайте dupeGuru и все они доступны в виде варианта Ubuntu PPA.

Это приложение работает в Linux точно также, как и на других платформах. Запустите приложение, добавьте один или несколько каталогов для сканирования, и нажмите кнопку Scan (Сканирование). Вы увидите список дубликатов файлов, и вы можете их либо удалить, либо переместить их в другое место. Вы также можете при помощи двойного щелчка мыши легко их открыть и проверить содержимое файла.

После установки пакет Ubuntu должен быть запущен из командной строки — например, с помощью команды dupeguru_se в случае использования стандартной редакции пакета. Это требуется из-за того, что по умолчанию на рабочем столе не устанавливается ссылка на программу. Такое отсутствие интеграции с системой является единственной причиной, по которой мы не можем еще больше рекомендовать эту утилиту; впрочем, после того, как вы ее установите и запустите, она будет хорошо работать.

Как и следовало ожидать, это не полный список. С помощью менеджера пакетов, который есть в вашем дистрибутиве Linux, вы обнаружите много других утилит, предназначенных для поиска дубликатов файлов. В основном, это команды без графического интерфейса. Если нет каких-либо особых требований, то описываемые выше программы будут для вас наилучшими и мы рекомендуем вам ими пользоваться.

Источник

Как найти повторяющиеся файлы в Linux и удалить их

Краткая информация: FSlint – отличный инструмент для поиска дубликатов файлов в Linux и их удаление.

FDUPES также находит файлы с тем же именем в Linux, но в командной строке.

Если у вас есть такая привычка скачивать все из Интернета, как я, у вас будет много дубликатов файлов.

Чаще всего я могу найти те же песни или кучу изображений в разных каталогах или в конечном итоге создать резервные копии некоторых файлов в двух разных местах.

Это боль, локализуя эти повторяющиеся файлы вручную и удаляя их для восстановления дискового пространства.

Если вы хотите избавиться от этой боли, существуют различные приложения Linux, которые помогут вам найти эти дубликаты файлов и удалить их.

В этой статье мы расскажем о том, как вы можете найти и удалить эти файлы в Ubuntu.

Примечание. Вы должны знать, что делаете.

Если вы используете новый инструмент, всегда лучше попробовать его в структуре виртуального каталога, чтобы выяснить, что он делает, прежде чем принимать его в корневую или домашнюю папку.

Кроме того, всегда лучше создавать резервную копию вашей системы Linux!

FSlint: инструмент GUI для поиска и удаления дубликатов файлов

FSlint помогает вам искать и удалять повторяющиеся файлы, пустые каталоги или файлы с неправильными именами.

Он имеет командную строку, а также графический интерфейс с набором инструментов для выполнения множества задач.

Чтобы установить FSlint, введите следующую команду в Terminal.

Откройте FSlint из поиска Dash.

FSlint включает в себя ряд опций на выбор.

Существуют варианты поиска дубликатов файлов, установленных пакетов, плохих имен, конфликтов имен, временных файлов, пустых каталогов и т. д.

Выберите путь поиска и задачу, которую вы хотите выполнить с левой панели, и нажмите «Найти», чтобы найти файлы.

После этого вы можете выбрать файлы, которые хотите удалить, и удалить их.

Вы можете щелкнуть по любому файловому каталогу из результата поиска, чтобы открыть его, если вы не уверены, и хотите дважды проверить его перед удалением.

Читайте также:  Темы для windows зверь

Вы можете выбрать параметры расширенного поиска, где вы можете определить правила для исключения определенных типов файлов или исключить каталоги, которые вы не хотите искать.

FDUPES: инструмент CLI для поиска и удаления дубликатов файлов

FDUPES – это утилита командной строки для поиска и удаления дубликатов файлов в Linux.

Он может отображать дубликаты файлов в определенной папке или рекурсивно в папке.

Он запрашивает, какой файл сохранить перед удалением, а опция noprompt позволяет удалить все дубликаты файлов, сохраняя первый, не спрашивая вас.

Установка на Debian / Ubuntu

Установка на Fedora

Для рекурсивного поиска в папке используйте параметр -r

Это будет только список дубликатов файлов и не удалит их самостоятельно.

Вы можете вручную удалить дубликаты файлов или использовать -d, чтобы удалить их.

fdupes -d /path/to/folder

Это ничего не удалит самостоятельно, но отобразит все дубликаты файлов и даст вам возможность удалять файлы по одному или выбрать диапазон для его удаления.

Если вы хотите удалить все файлы без запроса и сохранения первого, вы можете использовать опцию noprompt -N.

На приведенном выше снимке экрана вы можете увидеть команду -d, показывающую все дубликаты файлов в папке, и попросит вас выбрать файл, который вы хотите сохранить.

Существует много других способов и инструментов для поиска и удаления дубликатов файлов в Linux.

Лично я предпочитаю инструмент командной строки FDUPES; это просто и не требует никаких ресурсов.

Источник

Поиск в Linux с помощью команды find

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype Тип регулярного выражения.
-L или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <> \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

find / -name «file.txt»

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name «sess_*» -a -name «*cd»

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name «sess_*» -o -name «*cd»

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/\(sess_.*cd\)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name «*.log»

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

а) дате изменения:

find . -type f -newermt «2019-11-02 00:00»

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H «content» <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name «sess_*» -type f -print -exec rm <> \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name «sess_*» -type f -exec mv <> new_name \;

find . -name «sess_*» -type f | xargs -I ‘<>‘ mv <> new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name «*.tmp» | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e «s/test/production/g» <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Источник

Читайте также:  Курсор выходит за пределы экрана windows 10
Оцените статью