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

Обновлено: 21.11.2024

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

Тофер, активный пользователь Mac в течение последних 15 лет, с весны 2008 года является автором MacFixIt. Одно из его увлечений – устранение неполадок Mac и максимально эффективное использование компьютеров Mac и оборудования Apple дома и в офисе. рабочее место.

Существует несколько способов поиска файлов в OS X, наиболее популярными из которых являются подпрограммы на основе графического интерфейса, такие как меню Spotlight и поиск Finder, которые обеспечивают быстрый доступ к индексу поиска метаданных системы. Однако есть и другие способы доступа к этому указателю и поиска файлов, которые могут вас заинтересовать.

Конечно, кроме параметров графического интерфейса Apple, доступны некоторые сторонние инструменты поиска; однако без них другим вариантом в OS X является использование терминала, который может принести пользу как терминалу, так и подпрограммам на основе графического интерфейса.

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

Команда find попытается войти в любую папку по указанному пути, что может привести к ошибкам «Отказано в доступе», но для файлов, к которым у вашей учетной записи есть доступ по умолчанию, эта команда должна показать их правильно. Снимок экрана: Тофер Кесслер/CNET

найти /Users -name "test.txt"

Поскольку команда find проходит через иерархию файловой системы, ее выполнение может занять много времени, и если вы укажете только корневую папку (без использования флагов для предотвращения рекурсии), она может пройти через /Volumes/Macintosh HD/ повторно монтировать каталог точки монтирования и никогда не заканчивать поиск.

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

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

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

Команда locate покажет системные файлы по полному или частичному имени. Снимок экрана: Тофер Кесслер/CNET

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

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

Чтобы использовать эту команду, просто запустите ее следующим образом; он выведет список полных путей к файлам, которые включают поисковый запрос:

Команда mdfind найдет файлы в вашем пользовательском каталоге, а также в системе. В данном случае один и тот же файл был обнаружен как часть установки приложения разработчика в каталоге пользователя, а также в системном каталоге. Снимок экрана: Тофер Кесслер/CNET

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

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

Вопросы? Комментарии? Есть исправление? Опубликуйте их ниже или напишите нам по электронной почте!
Обязательно следите за нами в Твиттере и на форумах CNET Mac.

Если вы уже давно пользуетесь Mac, то знаете, что это больше, чем просто симпатичный интерфейс с окном и значками. Под поверхностью операционной системы находится целый мир, к которому вы можете получить доступ только из командной строки. Терминал (в папке /Applications/Utilities) является шлюзом по умолчанию для этой командной строки на Mac. С ним вместо того, чтобы указывать и нажимать, вы вводите команды, а ваш Mac выполняет ваши приказы.

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

Если вы еще не знакомы с интерфейсом командной строки вашего Mac. Прежде всего: как перемещаться по файловой системе из командной строки.

Подсказка

По умолчанию, когда вы открываете Терминал, первое, что вы видите, выглядит примерно так:

Последний вход: пятница, 25 июня, 10:37:06, ttys000
romansempire@Mac-Pro-8 ~ %

Вот что вы видите:

  • В первой строке отображается время, когда вы в последний раз входили в свой Mac через командную строку; это текущее время, когда вы используете Терминал.
  • Вторая строка — это подсказка, и хотя она может меняться от системы к системе в зависимости от конфигурации, по умолчанию она содержит несколько битов информации:
    • В приглашении выше romansempire указано имя пользователя.
    • Mac-Pro-8 — это имя компьютера Mac (то же, что и имя компьютера на панели «Общий доступ» в Системных настройках).
    • Значок ~ показывает, где вы находитесь в файловой системе Mac. ~ — это ярлык, обозначающий домашнюю папку текущего пользователя. (В Finder это папка с вашим именем пользователя и значком домика.)
    • % — это символ, который оболочка (интерфейс по умолчанию, который использует Терминал) отображает, чтобы указать, что она готова принять команду.

    Как узнать, что находится в папке

    Когда вы впервые попадаете в командную строку, вы находитесь в своей домашней папке. Находясь там или находясь в любой папке (каталог на Unix-языке), вам может понадобиться узнать, что в ней находится. Для этого используйте команду ls (или list). Введите ls и нажмите клавишу возврата, и вы увидите папки (и/или файлы) в текущем каталоге.

    Вывод простой команды ls довольно скуден; он показывает вам имена файлов и папок, содержащихся в текущем каталоге (включая некоторые знакомые, такие как «Фильмы», «Музыка», «Изображения» и т. д.). К счастью, вы можете добавить в команду ls несколько необязательных переключателей, которые позволят вам увидеть больше информации. Например, введите ls -l (это буква L в нижнем регистре), затем нажмите клавишу Return. Вы увидите что-то вроде этого:

    Не беспокойтесь слишком сильно о том, что все это значит, прямо сейчас — мы просто промокли ноги. Дело в том, что ls может предоставить дополнительную информацию о файлах и папках, в зависимости от указанных вами параметров. В этом случае эта дополнительная информация включает имя пользователя, которому владеют все элементы в каталоге. (Это право собственности является частью режима доступа к файлам в системе Unix.) Персонал romansempire рядом с большинством перечисленных выше элементов означает, что каждый из них принадлежит пользователю romansempire, который находится в группе персонал. Другая понятная часть информации рядом с каждым файлом и папкой — это дата и время последнего изменения каждого из них.

    Еще один удобный вариант: вы можете просматривать невидимые файлы, которые Finder обычно не показывает, набрав ls -a . (Все эти скрытые файлы имеют точки (.) перед именами.)

    Как получить доступ к другим папкам/каталогам

    Когда вы находитесь в Finder и хотите перейти в другую папку, вы находите эту папку и дважды щелкаете по ней. Вместо этого из командной строки вы используете команду cd (или change directory). Итак, допустим, вы находитесь в своей домашней папке и хотите заглянуть в папку «Загрузки». Для этого введите cd Downloads. (Не забывайте всегда вводить пробел после любой команды, которая имеет дополнительный аргумент, например имя каталога в предыдущем примере.) Как только вы это сделаете, ls покажет вам содержимое папки «Загрузки».

    Вот несколько быстрых приемов для перемещения по файловой системе вашего Mac.

    • Если вы наберете cd и нажмете клавишу возврата (без указания каталога), вы вернетесь в свою домашнюю папку. (Вы также можете ввести cd ~, чтобы перейти туда.)
    • Если вы наберете cd / , вы перейдете на корневой уровень вашего загрузочного диска.
    • Если вы наберете cd .. (это две точки), вы перейдете в каталог выше того, в котором находитесь в данный момент. Поэтому, если вы находитесь в своей домашней папке и набираете cd .. , вы перейдите в папку /Users вашего Mac.
    • А если вы наберете cd - (дефис), вы вернетесь в каталог, в котором находились до последнего запуска команды cd.

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

    Читатель Macworld Лон не может найти файл на своем Mac. Ему нужно удалить его, чтобы избежать проблем с совместимостью, и ни поиск Spotlight, ни просмотр папок не могут его найти.

    Spotlight должен позволить вам легко найти практически любой файл, который вы создаете или храните в macOS, но так бывает не всегда. Существует способ всестороннего поиска на вашем диске (или дисках) macOS с помощью терминала, но я думаю об этом как о последнем средстве, потому что он включает сложный синтаксис и может быть медленным. Он также может соответствовать большому количеству файлов, которые вам не интересны.

    В Терминале команда find может выполнять комплексный и глубокий поиск во всем, включая системные файлы и другие элементы, с которыми нам не нужно взаимодействовать и которые macOS не предоставляет пользователям. (Find — это то, чем я пользуюсь уже несколько десятилетий, и мне кажется, что это инструмент, разработанный для компьютера с подключенным телетайпом.)

    IDG

    Команда Unix find показывает полный путь к совпадающим файлам, где бы они ни находились на диске.

    В этом примере предположим, что я ищу файл, который, как мне известно, называется easysolutions.mdl , и я буду искать только easysolutions как уникальную часть. Шаблон поиска, показанный ниже, не зависит от регистра, поэтому прописные и строчные буквы сопоставляются независимо от того, что вы укажете. Если вам нужно использовать пробел, заключите текст в кавычки, например "простые решения" .

    1. Запустите терминал, который находится в разделе Приложения >Утилиты.
    2. Переключитесь на суперпользователя, для которого требуется учетная запись администратора. Вы вводите sudo su - и нажимаете Return, после чего вводите административный пароль. Если вы впервые используете sudo , macOS также предупредит вас об опасностях обладания системными сверхспособностями.
    3. Вы можете включить в поиск часть или все имя файла. Введите точно find / -name easysolutions -print
    4. Это может занять некоторое время. Это может занять несколько минут, поскольку macOS сопоставляется с каждым из сотен тысяч или миллионов отдельных файлов. Каждый результат отображается как отдельная запись.
    5. Когда вы увидите, что файл появился, он будет продолжен по его полному пути. Скопируйте путь от первого / до последнего / перед именем файла, например /Library/Application Support/BingoBongo/settings/preferences/config/
    6. Теперь в Finder выберите Перейти >Перейти к папке и вставьте этот путь.
    7. Папка откроется. В некоторых случаях вам может потребоваться разрешить открытие папки, введя имя учетной записи администратора и пароль.
    8. Если вы уверены, что видите именно тот файл, который хотите удалить, переместить или с которым нужно взаимодействовать, все готово.

    Во время этой операции поиска вы увидите записи, которые можно игнорировать, например:

    найти: /path/name/here/filename.txt: операция не разрешена

    найти: /dev/fd/3: не каталог

    Несмотря на то, что вы являетесь суперпользователем, базовая операционная система Unix и специальные модификации Apple запрещают некоторые виды операций.

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

    Вам повезло, мы покажем вам, как находить файлы и папки прямо из командной строки, используя два разных приема. Первый метод не зависит от операционной системы, что означает, что вы сможете использовать функцию поиска с Mac OS X, Linux, BSD и многими другими вариантами Unix, тогда как второй способ поиска использует модель поиска файлов только для Mac из командная строка. Давайте продолжим читать и узнаем, как использовать эти замечательные возможности.

    Поиск файлов из командной строки с помощью find

    Команда find очень быстра и проста в использовании, она прямиком из мира Unix и поэтому работает как в Linux, так и в Mac OS X. хороший выбор.

    В простейшем случае find можно использовать следующим образом:

    найти параметры пути

    Например, вы можете найти что-либо в домашнем каталоге пользователя, содержащее слово «экран» в имени, с помощью следующего:

    найти ~ -iname "экран*"

    Возможно, вы захотите направить результаты дальше, если ожидаете большой доход, например:

    найти ~ -iname "экран*" | больше

    Конечно, вы также можете найти определенные файлы, спрятанные где-то в каталоге. Например, поиск в папке пользовательской библиотеки определенного файла plist:

    найти ~/Library/ -iname "com.apple.syncedpreferences.plist"

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

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

    Поиск файлов в командной строке с помощью mdfind

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

    На самом базовом уровне mdfind используется следующим образом:

    mdfind -name имя_файла

    Например, чтобы найти все вхождения «Photo 1.PNG», команда будет выглядеть так:

    mdfind -name "Фото 1.PNG"

    Поскольку mdfind похож на Spotlight, его также можно использовать для поиска определенного файла в содержимом файлов и папок. Чтобы найти все документы, содержащие чье-то имя, можно сделать следующее:

    mdfind "Уилл Пирсон"

    Как и команда find, отправка результатов в more может быть полезна при сортировке большого количества файлов, например:

    mdfind "Отправлено с моего" | больше

    mdfind также можно ограничить определенными каталогами с помощью флага -onlyin:

    mdfind -onlyin ~/Library plist

    Наконец, есть также команда «найти», которая также очень мощная и может быть привязана к поиску, но ее нужно включать отдельно.

    Знаете какие-нибудь другие отличные приемы поиска или методы поиска файлов для командной строки? Поделитесь с нами в комментариях.

    Читайте также: