- Как в Linux найти и удалить дубликаты файлов
- FSlint
- fdupes
- dupeGuru , музыкальная редакция dupeGuru и редакция dupeGuru для работы с изображениями
- Как найти повторяющиеся файлы в Linux и удалить их
- FSlint: инструмент GUI для поиска и удаления дубликатов файлов
- FDUPES: инструмент CLI для поиска и удаления дубликатов файлов
- Установка на Debian / Ubuntu
- Установка на Fedora
- Поиск в Linux с помощью команды find
- Общий синтаксис
- Описание опций
- Примеры использования find
- Поиск файла по имени
- Поиск по дате
- По типу
- Поиск по правам доступа
- Поиск файла по содержимому
- С сортировкой по дате модификации
- Лимит на количество выводимых результатов
- Поиск с действием (exec)
- Чистка по расписанию
Как в 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 .
Пакет 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 включает в себя ряд опций на выбор.
Существуют варианты поиска дубликатов файлов, установленных пакетов, плохих имен, конфликтов имен, временных файлов, пустых каталогов и т. д.
Выберите путь поиска и задачу, которую вы хотите выполнить с левой панели, и нажмите «Найти», чтобы найти файлы.
После этого вы можете выбрать файлы, которые хотите удалить, и удалить их.
Вы можете щелкнуть по любому файловому каталогу из результата поиска, чтобы открыть его, если вы не уверены, и хотите дважды проверить его перед удалением.
Вы можете выбрать параметры расширенного поиска, где вы можете определить правила для исключения определенных типов файлов или исключить каталоги, которые вы не хотите искать.
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.
Описание опций
Опция | Описание |
---|---|
-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 |
Показать найденное. | |
-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 системах он может располагаться в разных местах.
Источник