Linux консоль поиск папки

Как выполнить поиск файлов и папок в Linux

В качестве вступительного слова дадим некоторое описание того, как вообще можно совершать поиск в linux. Для этих целей есть множество программ, но некоторые из них уже стали классикой поиска в linux. Подчеркнем, в данной статье мы сконцентрируемся исключительно на linux. Это означает, что даже если вы встретите утилиты с теми же самыми названиями в Solaris или операционных системах на ядрах BSD, приведенные советы могут работать не всегда. Так же это относится к busybox, которая реализует лишь небольшую часть функциональности оригинальных утилит.

Итак встречайте героев сегодняшнего обзора: locate — предоставляет поиск по имени файла в заранее подготовленной базе данных, find — работает на реальной файловой системе и предоставляет невероятные возможности для поиска файлов и папок по различным параметрам. Также мы расскажем вскользь о grep — утилите для поиска текста в файлах.

Поиск файла по имени при помощи утилиты locate

Чтобы выполнить просто поиск файла по имени в Linux логичнее использовать команду locate — за счет заранее подготовленной базы она быстро выдаст нужный результат:

Если же вы получили сообщение о том, что команда не найдена, возможно её нужно установить. Для Debian-based дистрибутивов (Ubuntu, Mint) установить её можно командой:

# apt-get install mlocate

Пользователям RedHat, CentOS и Fedora стоит выполнить

# yum install mlocate

После установки нужно создать/обновить базу данных — файл, содержащий в себе «снимок» файловой системы, благодаря которому locate работает так быстро:

Т.е. вместо того, чтобы каждый раз проходиться по всей файловой системе, locate доверяет updatedb создать файл, содержащий в себе все имена и пути файловой системы, и выполняет поиск в нем. Важно поддерживать его актуальность, иначе вы можете случайно найти уже давно удаленные файлы, или не найти новые. Поэтому updatedb при инсталляции «вешается» на CRON и выполняется автоматически — вы можете в этом убедиться, посмотрев на файлы заданий CRON.

Поиск в Linux при помощи утилиты find

Куда более мощным и гибким инструментом для поиска файлов и папок в Linux выступает команда find. Её синтаксис упрощенно выглядит так:

find [path. ] [expression]

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

Чтобы выполнить в linux поиск файла по имени по всей файловой системе нужно ввести:

# find / -name myfilename

Учтите, что в данном случае поиск будет идти по имени файла в точности соответствующему заданному. Чтобы сымитировать поведение команды locate для find следует ввести:

# find / -name «*part_of_name*»

«*» означает любое количество любых символов. Это дает нам возможность также производить поиск файлов по расширению:

Поиск файла по дате

Вот пример того, как можно выполнить поиск в Linux файла по дате:

# find /home -mtime -5

Данная команды выведет все файлы из каталога /home, измененные не более 5-ти дней назад.

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

А так, например, можно выполнит поиск файлов по размеру:

Читайте также:  Не запускается dota 2 linux mint

# find /home -size +1G

Данная команды выведет все файлы из каталога /home, имеющие размер более одного гигабайта. Очень удобно для поиска больших файлов в linux

Поиск папки

На самом деле поиск папки в linux ничем не отличается от поиска файла, так как папка — это файл. Однако find дает нам возможность указать тип. Например, чтобы явно выполнить поиск только папок, имена которых содержат слово, например, mysql, выполните

# find / -type d -name «*mysql*»

Здесь ключ «-type» указывает на тип. На текущий момент времени find поддерживает следующие типы:

  • b — блочное устройство
  • c — символьное устройство
  • d — папка (дирректория)
  • p — именнованный канал
  • f — обычный файл
  • l — символическая ссылка
  • s — сокет
  • D — дверь (только для Solaris)

Подробнее о различных параметрах поиска find вы можете почитать, введя команду

Поиск текста в Linux при помощи утилиты grep

Да, grep действительно очень хорош, когда речь заходит о поиске текста в файлах в linux по паттерну. Сразу оговоримся, что искать текст мы будем в файлах в формате plain text — чистый текст, таких как конфигурационные файлы, сценарии командного интерпретатора (bash. python, php. ) и др. Искать по файлам Word и Excel грепом эффективно вряд ли получится.

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

# grep -lri root /etc/*

Такая команда выведет имена всех файлов, в которых удастся найти заветные 4 буквы «root». Здесь ключ «-l» заставляет grep выводить только имена файлов. Т.е. если вы хотите увидить ещё и ту саму строку, где удалось найти запрашиваемое слово, то «-l» стоит не указывать. Ключ «-r» выполняет поиск не только по /etc, но и по всем файлам во всех подпапках. И наконец ключ «-i» говорит не принимать во внимание регистр, т.е. grep будет искать не только слово «root», но и «ROOT», и «rOOt». Вы поняли

Конечно, вмемогущий grep поддерживает регулярные выражения. Чтобы выполнить, например, поиск строки, явно начинающийся всё с того же слова, введите

# grep -lri ^root /etc/*

Крышка в начале слова «root» обязывает grep выводит только те файлы, где слово «root» стоит в начале строки. И таких трюков достаточно много. Если вы еще не знакомы с regex, то стоит начать хотябы с википедии

Источник

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

Большинство популярных файловых менеджеров для операционных систем на ядре Linux обладают достаточно функциональным инструментом поиска. Однако не всегда присутствующих в нем параметров хватает пользователю для поиска необходимой информации. В таком случае на помощь приходить стандартная утилита, запускающаяся через «Терминал». Она позволяет путем ввода команды, аргумента и опции запросто отыскать требуемые данные в определенной директории или во всей системе.

Используем команду find в Linux

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

Переход в директорию через консоль

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

  1. Откройте установленный файловый менеджер и перейдите в требуемую папку, где хотите в дальнейшем использовать команду find.

На любом объекте щелкните ПКМ и найдите пункт «Свойства».

Вы увидите его родительскую папку с полным указанием пути. Запомните его, чтобы осуществить переход из «Терминала».

Пропишите там команду cd /home/user/folder , где user — имя домашней папки пользователя, а folder — название требуемой директории.

Читайте также:  Удаленное наблюдение за компьютером windows

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

Поиск файлов в текущей директории

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

Активация find без аргументов и опций используется тогда, когда надо просмотреть сразу все элементы. Если их название полностью не помещается в строки, стоит изменить команду, чтобы она обрела вид find . -print .

Поиск файлов в указанном каталоге

Команда для отображения файлов через заданный путь практически не отличается от той, которую мы упомянули выше. Вам так же следует прописать find , а после добавить ./folder , если хотите узнать данные о каталоге в текущем расположении, либо же потребуется указать полный путь, путем ввода, например, find ./home/user/downloads/folder , где folder — конечная директория. Каждые элементы будут выведены отдельными строками в порядке их глубины.

Поиск по имени

Иногда появляется надобность отобразить только удовлетворяющие по названию объекты. Тогда пользователю нужно задать отдельную опцию для команды, чтобы она поняла обращение. Строка ввода обретает такой вид: find . -name «word» , где word — ключевое слово для поиска, которое обязательно прописывается в двойных кавычках и с учетом регистра каждого символа.

Если же вы не знаете точный регистр каждой буквы либо же желаете отобразить все подходящие названия, не взяв во внимание этот параметр, введите в консоли find . -iname «word» .

Для фильтрации результатов по ключевому слову к аргументу -name добавляется еще один. Команда обретает вид find . -not -name «word» , где word — слово, которое надо исключить.

Еще порой возникает потребность отыскать объекты по одному ключу, исключив при этом другой. Тогда поочередно присваивается сразу несколько опций поиска и строка ввода получается следующей: find . -name «word» -not name «*.txt» . Обратите внимание, что во втором аргументе в кавычках указано «*.txt», а это значит, что find работает не только с названиями, но и с форматами файлов, которые задаются в таком виде.

Существует и оператор ИЛИ. Он позволяет найти один или сразу несколько подходящих аргументов. Каждый указывается отдельно, с добавлением при этом соответствующих аргументов. В итоге получится примерно следующее: find -name «word» -o -name «word1» .

Указание глубины поиска

Команда find поможет юзеру и тогда, когда ему нужно найти содержимое директорий только до указанной глубины, например, не требуется осуществление анализа внутри третьей подпапки. Для установки подобных ограничений впишите find . -maxdepth N -name «word» , где N — максимальная глубина, а -name «word» — любые последующие аргументы.

Поиск в нескольких директориях

Во многих каталогах присутствует сразу по несколько папок с различным содержимым. Если их там находится большое количество, а поиск нужно осуществить только в определенных, тогда потребуется указать это при вводе команды find ./folder ./folder1 -type f -name «word» , где ./folder ./folder1 — перечень подходящих директорий, а -name «word» — остальные аргументы.

Читайте также:  Удаленное управление windows троян

Отображение скрытых элементов

Без указания соответствующего аргумента скрытые объекты, находящиеся в сканируемых каталогах, отображаться в консоли не будут. Потому пользователь вручную прописывает дополнительную опцию, чтобы в итоге команда была такой: find

-type f -name «.*» . Вы получите полный список всех файлов, но если же к некоторым из них нет доступа, перед словом find в строке пропишите sudo , чтобы активировать права суперпользователя.

Сканирование домашних папок групп и пользователей

Каждый пользователь может создавать неограниченное количество каталогов и объектов в разных расположениях. Быстрее всего отыскать ту информацию, которая принадлежит одному из юзеров, с помощью команды find и одного из ее аргументов. В «Терминале» пропишите find . -user username , где username — имя пользователя. После ввода сканирование запустится автоматически.

Примерно такая же схема работает и с группами пользователей. Запуск анализа файлов, связанных с одной из групп, происходит через find /var/www -group groupname . Не забывайте, что объектов может быть большое количество и на вывод их всех иногда уходит много времени.

Фильтрация по дате изменений

Операционная система автоматически сохраняет информацию о дате изменения каждого существующего файла. Команда find позволяет найти их все по указанному параметру. Требуется только прописать sudo find / -mtime N , где N — количество дней назад, когда объект был изменен последний раз. Приставка sudo здесь нужна для того, чтобы получить данные и о файлах, предназначенных только для суперпользователя.

Если же вас интересует просмотр элементов, которые последний раз открывались определенное количество дней назад, тогда строка немного меняет свой вид на sudo find / -atime N .

Фильтрация по размеру файлов

Каждый объект имеет свой размер, соответственно, команда для поиска файлов должна обладать функцией, позволяющей фильтровать их по этому параметру. find умеет это делать, юзеру необходимо только задать сам размер через аргумент. Достаточно ввести find / -size N , где N — объем в байтах, мегабайтах (M) или гигабайтах (G).

Указать можно и диапазон искомых элементов. Тогда в команду вписываются определители и получится, например, такая строка: find / -size +500M -size -1000M . Такой анализ будет отображать файлы более 500 мегабайтов, но менее 1000.

Поиск пустых файлов и каталогов

Некоторые из файлов или папок бывают пустые. Они просто занимают лишнее пространство на диске и иногда мешают нормально взаимодействовать с компьютером. Их следует найти, чтобы определиться с дальнейшими действиями, а в этом поможет find /folder -type f -empty , где /folder — место, где осуществляется сканирование.

Отдельно хотелось бы вкратце отметить другие полезные аргументы, которые время от времени становятся полезными для юзера:

  • -mount — ограничение только на текущую файловую систему;
  • -type f — отображать только файлы;
  • -type d — показывать только директории;
  • -nogroup , -nouser — поиск файлов, которые не относятся к никакой группе или не принадлежат пользователю;
  • -version — узнать версию используемой утилиты.

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

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

Читайте также: Примеры команд grep / cat / ls в Linux

Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью