Содержание:
- Используем команду find в Linux
- Переход в директорию через консоль
- Поиск файлов в текущей директории
- Поиск файлов в указанном каталоге
- Поиск по имени
- Указание глубины поиска
- Поиск в нескольких директориях
- Отображение скрытых элементов
- Сканирование домашних папок групп и пользователей
- Фильтрация по дате изменений
- Фильтрация по размеру файлов
- Поиск пустых файлов и каталогов
- Вопросы и ответы: 1
Большинство популярных файловых менеджеров для операционных систем на ядре Linux обладают достаточно функциональным инструментом поиска. Однако не всегда присутствующих в нем параметров хватает пользователю для поиска необходимой информации. В таком случае на помощь приходить стандартная утилита, запускающаяся через «Терминал». Она позволяет путем ввода команды, аргумента и опции запросто отыскать требуемые данные в определенной директории или во всей системе.
Используем команду find в Linux
Команда find предназначена для поиска различных объектов, включая файлы любых форматов и директории различной глубины. От пользователя требуется только ввести саму команду, указать искомое значение и присвоить аргументы, чтобы задать параметры фильтрации. Выполнение процедуры самой утилитой обычно не занимает много времени, но это зависит еще от объема сканируемой информации. Теперь же давайте остановимся на примерах использования find более детально.
Переход в директорию через консоль
Для начала хотелось бы немного отступить от основной команды и затронуть тему дополнительных действий, которые в будущем помогут при управлении из консоли. Дело в том, что утилиты в дистрибутивах Linux не заточены под поиск всех находящихся на компьютере элементов. Все процессы следует запускать только с указанием полного расположения к элементам либо переходить в расположение через команду cd. Сделать это можно достаточно легко:
- Откройте установленный файловый менеджер и перейдите в требуемую папку, где хотите в дальнейшем использовать команду find.
- На любом объекте щелкните ПКМ и найдите пункт «Свойства».
- Вы увидите его родительскую папку с полным указанием пути. Запомните его, чтобы осуществить переход из «Терминала».
- Теперь запустите консоль, например, через меню.
- Пропишите там команду
cd /home/user/folder
, где user — имя домашней папки пользователя, а folder — название требуемой директории.
Если перед тем, как задействовать 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» — остальные аргументы.
Отображение скрытых элементов
Без указания соответствующего аргумента скрытые объекты, находящиеся в сканируемых каталогах, отображаться в консоли не будут. Потому пользователь вручную прописывает дополнительную опцию, чтобы в итоге команда была такой: 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 законченно. Если желаете детально изучить другие стандартные консольные инструменты операционных систем на ядре Линукс, советуем обратиться к отдельному нашему материалу по следующей ссылке.
Подробнее: Часто используемые команды в «Терминале» Linux
После поиска требуемой информации вы можете осуществлять с ними любые другие действия, например, редактирование, удаление или изучение содержимого. В этом помогут другие встроенные утилиты «Терминала». Примеры их использования найдете далее.
Читайте также: Примеры команд grep / cat / ls в Linux
Наш Telegram каналТолько полезная информация
Спасибо! Помог первый совет!