Как найти и удалить битые символические ссылки в Linux

  Дмитрий Бушуев  | 

Поиск файлов

  • find
  • locate
  • whereis

Первая команда с которой мы ознакомимся, это команда «find«. Позволяет выполнять поиск файлов в каталогах. Синтаксис команды очень просто и имеет вид:

find путь -опции

Эта команда имеет очень мощный функционал и позволяет осуществлять очень гибкий поиск файлов. В путь мы указываем путь к каталогу в котором будем искать файлы и после этого указываем опции:

-name — поиск файла согласно шаблону

-user — поиск файлов определенного пользователя

-type — поиск по типу файла

-mtime — поиск по времени создания или модификации

Теперь рассмотрим пару примеров использования команды find.

find ~ -type f -size +100M

Этой командой мы выполним поиск всех файлов в домашнем каталоге пользователя размером больше 100 мегабайт. Опция -type f указывает, что искать мы будем файлы, опция -size +100M указывает, что искать файлы размер которых больше 100 мегабайт.

find ~ -type f -mtime +300

Теперь мы ищем файлы которые были изменены или созданы более 30ти дней назад. Опция —mtime +30 указывает нам а то, что нужно искать файлы старше 30ти дней.

Также есть опция которая указывает глубину поиска в каталогах -maxdepth. Так как команда find ищет только в том каталоге в котором вы указали. С помощью переменно -maxdepth можно задать глубину поиска в подкаталогах.

locate

locate не имеет такого сильного функционала как find, однако обладает другими преимуществами. Если вам нужно очень быстро найти файл, то используя команду locate вы это сделаете в разы быстрее чем при помощи команды find. Дело в том, что locate использует специальную базу и поиск производится не по файловой системе, а по базе. Для начала работы c командой locate вам нужно обновить базу данных, делается это командой updatedb. Выполнять нужно от имени суперпользователя. Также базу нужно периодически обновлять, так как в неё не будут добавлены файлы, которые были созданы после момента последнего выполнения обновления базы.

Пару примеров использования locate

  • locate file — поиск файла с именем file
  • locate .txt — найти все файлы с расширением txt
  • locate file -i — регистр файлов учитывает поэтому, чтобы снять это ограничение, вводим опцию -i
  • locate file -c — вывод количества найденных файлов
  • locate file -n 5 — ограничение вывода в 5 результатов
Читайте также:  Как установить Telegram на Ubuntu через PPA & Snap

Довольно простой синтаксис и очень быстрый поиск. Только не забывайте использовать updatedb.

whereis

Не совсем поиск файлов, однако тоже полезная команда. Позволяет найти бинарные файлы, исходники и страницы документации программы установленной в системе. Синтаксис очень простой: whereis имя_программы.

При помощи этих 3х команд вы сможете эффективно и быстро искать файлы в вашей системе. Запомните основные опции(ключи) и приемы работы с командами, таким образом ваша работа станет еще эффективней

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

Получаем размеры директорий командой du

Вторая команда, которую мы рассмотрим, это du. du – команда отображающая размер директории.

Дополнительные опции для du:

  • du -h – показывает информацию в читабельном формате. Можно указать путь к конкретной директории, если применить без этого, покажет информацию в текущем каталоге.
  • du -sh – покажет размер директории в которой вы находитесь. Можно указать путь к директории.
  • du -m – вывод информации в Мб.
  • du -h —time – выведет информацию с дополнительным столбцом по времени изменения директории или файлов.

Больше информации по утилите, можно увидеть так:

# -du —help

При администрировании сервера, можно комбинировать вышеописанные команды. Например, выведем размер всех вложенных каталогов в /var/log и отсортируем вывод от большего к меньшему (чтобы самые большие каталоги оказались вверху списка):

# du -h /var/ | sort -rn

# du —max-depth=1 -h – выводит на экране размер вложенных директории, не дальше 1-го уровня вложенности.

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

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

# вывести все данные на экран, кроме закомментированных строк cat ./ | grep -v ‘^#’ # вывести все данные на экран, кроме пустых строк cat ./ | grep -v ‘^$’ # вы можете прочитать разом все файлы и сделать фильтр grep cat * | grep ‘текст для поиска’ # поиск по целому слову egrep -w «SELECT» * поиск в списке файлов ls -i | grep -i text # рекурсивный поиск по всем папкам внутри родительской папки grep -R text *

Сегодня мы с вами рассмотрели использование команды grep для поиска и фильтрации вывода команд в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках.

Читайте также:  Apple Watch: блестящие скрытые функции о которых вы могли не знать!

Если есть вопросы, то пишем в комментариях.

Также можете помочь проекту, заранее всем СПАСИБО!!!

Пожертвовать

Что делать с битыми символическими ссылками

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

$ find . -xtype l 2>/dev/null -exec rm {} \;

Часть этой команды rm {} превращается в команду «удалить файл».

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

$ rm file1 $ ln -s /apps/data/newfile file1

Регистр имен

Также стоит отметить чувствительность файловой системы Linux к регистру. Файлы и будут интерпретироваться как разные файлы и могут находиться в одной директории, в отличие от ОС Windows, который не различает регистр имен. То же правило действует и на каталоги — имена в разных регистрах указывают на разные каталоги.

Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:

Регистр имен

Стандарт иерархии файловой системы

  • / — root каталог. Содержит в себе всю иерархию системы;
  • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);
  • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);
  • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;
  • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;
  • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;
  • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;
  • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;
  • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;
  • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;
  • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);
  • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;
  • /root — директория, которая содержит файлы и личные настройки суперпользователя;
  • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;
  • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;
  • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);
  • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;
  • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;
  • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;
  • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.
Читайте также:  Microsoft net framework 4 extended что это

Команда find в Linux

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.