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

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

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

7.10.13 в 18:04
Источники: blog.superuser.com
Как искать файлы в OS X с помощью Терминала

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

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

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

mdfind kittens

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

mdfind -name kittens

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

mdfind -name kittens > ~/Desktop/cats_list.txt

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

mdfind -onlyin ~ -name kittens

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

mdls image.png

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

mdfind -onlyin ~ 'kMDItemPixelWidth == "684"'

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

mdfind -onlyin ~ 'kMDItemContentType = "public.mp3" >= kMDItemDurationSeconds = "180"'

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

mdfind kind:folder
mdfind kind:image
mdfind kind:music
mdfind kind:video
mdfind kind:text