Поиск файла через терминал mac os

Как искать файлы в OS X с помощью Терминала

Утилита mdfind позволяет найти скрытые глубоко в системе файлы, которые не видно при поиске в Spotlight

В OS X найти любой файл очень просто, нужно лишь воспользоваться встроенным поиском Spotlight, который мгновенно найдет файлы, папки, приложения, текст письмах или документах. Нажав ctrl+Пробел вы найдете все что вам нужно в считанные секунды.

Благодаря тому что OS X это система основанная на Unix она содержит массу скрытых возможностей, которые доступны через командную строку. Поиск через командую строку позволяет найти совершенно все файлы, даже если они были скрыты и хранятся где-то глубоко в системе. Это может быть эффективно, если вы пытаетесь полностью удалить какое-то приложение вручную или ищите необходимые файлы по всему жесткому диску, включая системные папки.

Запустите Терминал и введите команду mdfind + искомое слово:

Такой поиск будет искать слово как в названии, так и в содержании файлов, если нужно найти лишь имя файла, воспользуйтесь оргументом -name:

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

Если нужно произвести поиск не по всему жесткому диску, а лишь по вашей папке пользователя, необходио указать в качестве пути тильду и оргумент -onlyin:

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

На выходе вы получите список атрибутов и их параметров, например kMDItemKind = 684, говорит о ширине картинки в пикселях (полный список атрибутов файлов смотрите в документации Apple). Следующая команда будет искать файлы в папке пользователя, чья ширина также равна 684 px:

В этой строке вы могли заметить использование оператора равно ==, но можно использовать и другие, такие как больше, = больше или равно, && и, || или. Например следующая команда найдет все MP3 файлы в папке пользователя, длина которых больше или равна 3-м минутам:

‘kMDItemContentType = «public.mp3» >= kMDItemDurationSeconds = «180»‘

Тип искомого файла можно задавать более простым способом:

Источник

Как искать файлы в OS X с помощью Терминала

Утилита mdfind позволяет найти скрытые глубоко в системе файлы, которые не видно при поиске в Spotlight

В OS X найти любой файл очень просто, нужно лишь воспользоваться встроенным поиском Spotlight, который мгновенно найдет файлы, папки, приложения, текст письмах или документах. Нажав ctrl+Пробел вы найдете все что вам нужно в считанные секунды.

Благодаря тому что OS X это система основанная на Unix она содержит массу скрытых возможностей, которые доступны через командную строку. Поиск через командую строку позволяет найти совершенно все файлы, даже если они были скрыты и хранятся где-то глубоко в системе. Это может быть эффективно, если вы пытаетесь полностью удалить какое-то приложение вручную или ищите необходимые файлы по всему жесткому диску, включая системные папки.

Запустите Терминал и введите команду mdfind + искомое слово:

Такой поиск будет искать слово как в названии, так и в содержании файлов, если нужно найти лишь имя файла, воспользуйтесь оргументом -name:

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

Если нужно произвести поиск не по всему жесткому диску, а лишь по вашей папке пользователя, необходио указать в качестве пути тильду и оргумент -onlyin:

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

На выходе вы получите список атрибутов и их параметров, например kMDItemKind = 684, говорит о ширине картинки в пикселях (полный список атрибутов файлов смотрите в документации Apple). Следующая команда будет искать файлы в папке пользователя, чья ширина также равна 684 px:

В этой строке вы могли заметить использование оператора равно ==, но можно использовать и другие, такие как больше, = больше или равно, && и, || или. Например следующая команда найдет все MP3 файлы в папке пользователя, длина которых больше или равна 3-м минутам:

‘kMDItemContentType = «public.mp3» >= kMDItemDurationSeconds = «180»‘

Тип искомого файла можно задавать более простым способом:

Читайте также:  See full map windows 10

Источник

Секреты Терминала. Часть 6: Способы поиска

Мы продолжаем наш цикл о командной строке Mac OS X. Как мы и обещали, на этот раз речь пойдёт о возможностях поиска объектов, предоставляемых терминалом Мака. Скептики сразу удивятся и подумают: «мы уже десять лет живём в XXI веке, а вы тут предлагаете заниматься поиском через командную строку, как в старые добрые восьмидесятые?». Отчасти скептики будут правы, потому что встроенные в Mac OS X пользовательские средства поиска очень даже хороши. Но только до тех пор, пока вам не понадобится сформировать сложный запрос. В этом случае знание возможностей командной строки позволит вам сэкономить немало времени и сил.

Сегодня мы расскажем о команде find и ещё об одном средстве поиска — команде whereis.

Основная команда поиска имеет следующий синтаксис:

find [область поиска] [условия поиска] [шаблон свойств объекта]

Иными словами, сначала нужно указать, ГДЕ ищем, потом — КАК ищем, потом — ЧТО ищем. Про команду find и все её параметры можно писать целую книжку. Их настолько много, что пытаться осветить все из них в этом материале было бы бессмысленно. Более того, многие параметры используются крайне редко и вряд ли понадобятся рядовому (или даже продвинутому) пользователю.

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

— ваша «домашняя папка»

/ — весь компьютер

. — текущий каталог

.. — каталог более высокого уровня

Кроме того, никто не запрещает ввести вам в качестве области полноценный путь к папке.

А вот параметры поиска можно рассматривать долго. Очень долго.

-name — самый популярный параметр. Ищет по имени файла.

-maxdepth — задаёт максимальную глубину поиска. Если вы введёте -maxdepth 4, то команда find не станет просматривать содержимое подподподподпапок. А вот подподподпапки она всё-таки прошерстит 🙂

-mindepth — задаёт минимальную глубину поиска. Если ввести -mindepth 2, то поиск будет вестить, начиная со второго уровня вложения.

-flags — задаёт атрибуты (флаги) объекта. Подробнее про список флагов мы поговорим в отдельной статье. А пока запомните, что -flags hidden ищет только скрытые файлы.

-empty — ищет только пустые файлы и папки. Никаких дополнительных параметров не требуется

-group — ищет файлы, у которых группа соответствует введённому критерию. Например, можно ввести -group wheel.

-newer — ищет все файлы новее заданного (соответственно, требуется ввести путь к файлу-эталону). «Новее» значит «более поздняя дата изменения».

-newerXY — вообще высший пилотаж поиска. Вместо X вы можете подставить B (дата создания), m (дата модификации), a (дата последнего доступа к файлу) — эти параметры относятся к объекту, который вы ищете. Вместо Y можно подставить те же параметры, но они будут относиться к объекту-эталону, путь к которому задаётся далее. Вся эта конструкция запускает поиск по сложному критерию сравнения дат: например, -neweraB file станет искать только те объекты, у которых дата последнего доступа новее, чем дата создания объекта file.

Xtime — дополнение к предыдущему параметру. Вместо X можно ввести те же сокращения. Например, -mtime 7 покажет вам только те объекты, которые модифицировались в течение последней недели.

-path — позволяет точнее указать путь к файлу. Параметр приобретает смысл, если его применять с регулярными выражениями, о которых мы поговорим позже.

-perm — задаёт права доступа к искомому объекту. Например, можно ввести -perm 644.

-size — задаёт размер файла. Вслед за size вводится число и сокращение:

  • 10с означает 10 байт;
  • 10k — 10 килобайт;
  • 10M — 10 мегабайт;
  • 10G — 10 гигабайт;
  • 10T — 10 терабайт;
  • 10P — 10 петабайт (нехилый размер, не правда ли? 🙂

-type — задаёт тип объекта. Тут тоже нужны сокращения (например, -file f):

  • d — папка
  • f — файл
  • l — символическая ссылка

-user — задаёт имя владельца. Подходит как имя пользователя, так и цифровое обозначение (например, -user 501).

-iname — поиск по имени без учёта регистра

-ipath — поиск по пути без учёта регистра

Думаете, это всё? Если бы 🙂

find -a — ищет тот объект, параметры которого удовлетворяют сразу двум критериям поиска. Таким образом можно требовать что-то вроде: find -name . -a -user . , тогда команда будет искать файлы по имени и по владельцу, к примеру. Запоминается легко — a — and. Прямо как в естественном языке — пишем условия слева и справа от данного флага.

find -o — аналогична предыдущей команде, однако ищет то, что удовлетворяет хотя бы одному из критериев (o тут служит в роли or — или). В случае описанного выше примера мы можем искать файлы либо принадлежащие кому-то, либо, к примеру, ещё кому-то, тут не получится задать «и», так как файл не может принадлежать сразу нескольким, только одному пользователю.

Читайте также:  Сравнить содержимое каталогов linux

find -n — днная команда продолжает наш рассказ о логических запросах, мы можем указать, какой параметр не должен встречаться у файла, тут n — not. Мы можем инвертировать значение логического выражения также с помощью ! , указав его перед скобками. find . ! \( -name «*.jpg» \) найдёт нам всё, что не имеет суффикса .jpg , то есть, предположительно не фотографии, таким образом, указав нужные расширения, мы можем отделить музыку от плейлистов с обложками, к примеру. Опции эти могут пригодиться при построении сложных запросов с участием сразу нескольких таких вот флагов, ведь мы можем без проблем комбинировать and и or, а также «!» для отрицания.

find -exec — эта команда поможет нам выполнить с найденными файлами некоторое действие, которое просто задаётся командой после данной опции. find . -name «*» -exec cat покажет нам все найденные файлы. Тут для простоты я предполагаю, что всё в данной директории — обычные тектовые файлы и я могу их так просто вывести, это нужно для упрощения примера, однако можно строить куда более сложные запросы, используя полученные знания, относящиеся к логическим запросам.

find -fprint — данная команда выведет данные не на терминал, а в файл. Необходимо просто указать его имя после опции, таким образом мы можем легко и просто освободить терминал от ненужной информации и продолжить работать с результатами позже, открыв файл или же выведя его в терминал.

Полагаем, нет смысла говорить о том, что комбинировать все эти параметры можно как угодно. Можно даже вбить всё это в одну команду!

Попробуйте поиграться с find и ввести что-нибудь типа:

-type f -iname iTunes -size 20M -mtime 14 -user 501 -perm 755

whereis

Это экзотическая команда поиска программ. Она позволяет узнать, где находится файл той или иной команды, которую вы запускаете в Терминале. Например, можно ввести:

И вам покажут местонахождение бинарного файла команды (/usr/bin/find). Пользоваться этой командой вам придётся нечасто, но иногда она может пригодиться.

Рассмотренная команда find становится по-настоящему полезной, если вы знаете основы построения регулярных выражений. Об этом мы поговорим в следующей статье.

Источник

Поиск файлов в терминале Mac OS X

Не для кого не секрет, что терминал в Mac OS X выступает, как сильная среда, в которой вы получаете доступ к скриптовым инструментам, которые способны организовать ваши рабочие процессы в операционной системе Mac OS X; собрать информацию, сформировать отчеты — воспользоваться вашим “маком”, качественно новыми способами. Вообще, просто не передать словами, когда без использования мыши и графического окружения, вы способны проделывать достаточно сложный операции, исключительно из командной строки вашего устройства под управлением Mac OS X. Безусловно, работа в терминале Mac OS X требует определенных знаний, уровнем выше, чем просто — пользователь компьютера. Но изучая компьютерные технологии, я также определил для себя, что начало — это любой этап в той или иной области. Ты начинаешь изучать, читать, восполнять пробелы знаний, которых не достаточно. Так и с командной строкой в Mac OS X. В ней нет определенных операций, которые нужно начинать изучать поэтапно. Вы либо знаете о тех или иных особенностях и функциональных возможностях, либо нет. Итак, сегодня учимся искать файлы в терминале Mac OS X. Очередная статья про командную строку в Mac OS X.

С чего начинается поиск в OS X, когда мы работаем с графической средой? Все просто, мы вызываем Finder, и нажимаем сочетание клавиш Command + F (на раскладке macbook клавиша слева, рядом с пробелом). Нажав сочетание для вызова поиска, мы просто вбиваем текст в соответствующее поле, и получаем наиболее полную информацию по интересующим нас критериям.

А как это происходит в командной строке? На самом деле поиск в командной строке Mac OS X также прост. Вам потребуется знать всего три основные команды поиска: «Find», «mdfind», «locate». После ввода этих команд и указания всех параметров поиска, ваша поисковая выдача наполнится результатами с демонстрацией полного пути к файлам наиболее четко соответствующим введенному запросу.

Команда Find

Базовая команда поиска не только в операционной системе Mac OS X, но и на всех других Unix системах. Я говорю о том, что этот вариант поиска работает в других операционных системах, отличных от Mac OS X. Чтобы команда выполнялась корректно ей необходимо создать ряд условий:

Читайте также:  Восстановление системных файлов windows system32

1. Вы определяете область по которой будет происходить поиск;

2. Затем указываете имена файлов которые вам необходимы.

Не так много условий, но как только они будут выполнены, перед вами появится окно результатов поиск в командной строке Mac OS X, где будут указан полный путь к найденным файлам.

Так в примере выше, я воспользовался командой «find» в терминале Mac OS X (командной строке), для поиска файла с именем «Finder». В принципе условия поиска были достаточно простыми, ведь я знал расположение файла, знал его имя, и все что мне было необходимо — это ввести данные. Первое, что я сделал, это написал саму команду, далее путь к файлу, обозначил условие поиска «-name», и после условия ввел его значение — файл Finder.txt.

Стоит понимать, что мой пример примитивный, а поиск может происходит по любым параметрам, которые только пожелаете, и как может себе позволить «find» (команда поиска) в операционной системе Mac OS X (-type (поиск по определенному типу), -size (поиск по размеру файла) и т.д.).

Узнать о том какие условия доступны из командной строки для операторов «find» в Mac OS X можно набрав «man find». Появится полное описание команды. Как только закончите его читать нажмите Ctrl + Z.

Команда Locate

Найти что-либо в Unix системах быстрее чем в других ОС. Все дело в том, что поиск в Unix достаточно разнообразен. Ведь с одной стороны у вас есть команда «Find». Ее функционал был продемонстрирован выше, но она эффективна в том случае, когда вы точно знаете место размещения, или у вас есть время для ожидания. Так как поиск «в слепую» при помощи команды «Find», может занять достаточно много времени. Так как объем сканируемого пространства в современных жестких дисках достигает внушающих размеров.

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

Sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Данная инструкция заставит активироваться в вашей системе демона, который проиндексирует вашу систему и позволит работать с командой «locate» в терминале операционной системы OS X. Как я уже говорил команда locate направлена для поиска по системным файлам. Именно для этого ее и необходимо использовать. Так как в поисковый индекс не попадут пользовательские файлы. Кстати, не пытайтесь воспользоваться поиском при помощи locate сразу. База должна быть создана. Но как только процесс будет завершен, можно воспользоваться следующей конструкцией — пишем locate имя файла.

Команда mdfind

Эта команда представляет собой поисковый алгоритм в системах OS X только без графического окружения. Да, mdfind — это Spotlight, только без красивых кнопок, и с более трудными для понимания настройками.

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

Введя простую инструкцию mdfind OSX. Будут найдены все документы с содержанием как внутри так и в название «OSX». Но такой поиск слишком широк, нам не нужна поисковая выдача содержащая несколько сотен объектов, и поэтому в команде mdfind приветствуется использование флагов. Таких как флаг «-onlyin» который дает возможность воспользоваться командой mdfind, но только по определенной конструкции, когда поиск будет производится в том месте который мы теперь можем указать (теперь, после ввода флага «-onlyin»).

Кстати, если использовать «-onlyin» в директории (указывать путь поиска и заканчивать на директории) то поиск будет осуществляется в конечной папке и уровнями ниже. При этом если указать в конце файл, поиск будет производится в конкретном файле.

Собственно не так сложно, но при этом лучше конечно же знать спецификацию, попробовать почитать, чтобы понимать какие есть возможности для работы с командой поиска mdfind в терминале Mac OS X.

Под занавес я не мог пропустить один очень интересный флаг для поиска в терминале OS X, команды mdfind. Этот флаг называется «-live». Его функциональные особенности заключаются в том, что он может отслеживать изменения в тех или иных объектах в реальном времени. Все просто, вы прописываете конструкцию запроса, к примеру:

mdfind OSX -onlyin /Users/mzv100/Desktop/ -live

Теперь когда я делаю изменения в конечной директории, и эти изменения касаются непосредственно запроса «OSX», я буду об этом знать.

Дорогой друг, таков мир, понравилась статья — поставь Лайк, это единственный способ для меня, быть заметным. Спасибо!

Источник

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