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

Обновлено: 03.07.2024

Есть ли способ поиска во всех текстовых файлах в папке (и подпапках) определенной строки или фрагмента текста в Mac OS X?

Вы не можете сделать это с помощью значка прожектора в строке меню. Но вы можете сделать это с помощью spotlight:

Перейдите к папке в Finder.

Введите свой поиск в строке поиска в правом верхнем углу папки.

Над результатами есть строка, которая гласит:

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

Затем щелкните значок шестеренки, выберите «Показать критерии поиска» и измените вид на текстовые файлы.

к сожалению, похоже, что это делает ИЛИ, а не И, и я думаю, что некоторые символы удаляются из запросов. нет, пока папка обычно индексируется в центре внимания @ Арам Вы выяснили, как сделать «И»? Я ищу "Мои кошачьи варежки", и он находит все, что имеет "Мои" или "кошки" или "варежки", а НЕ мою точную фразу. РЕДАКТИРОВАТЬ - добавить кавычки вокруг него.

Если вы предпочитаете командную строку,

Вам нужно быть (или познакомиться) с grep . Читайте man grep для получения дополнительной информации.

В моей .profile я создал этот помощник: function findtext() < grep -ri "$1" . >. Я использую это так: findtext toto где я хочу начать поиск. Недостатком является то, что он работает очень медленно. поиск около 50 ГБ текста мучительно медленен. что это значит: grep: warning: рекурсивный поиск stdin @SuperUberDuper Это означает, что вы пропустили трейлинг "." (т.е. вы не указали каталог)

Очень мощный и быстрый

В правом верхнем углу экрана: прожектор

BBEdit также поддерживает отличный поиск файлов и папок.

BBEdit теперь TextWrangler, и он продолжает включать отличный многофайловый поиск grep. BBEdit это просто BBEdit, TextWrangler это просто TextWrangler. BBEdit немного более расширен, чем TextWrangler. TextWrangler бесплатен как в бесплатном пиве.

c игнорирует регистр Посмотрите этот ответ для обзора формата запроса и других атрибутов .

-F ищет фиксированные строки вместо регулярных выражений. -l печатает только имена соответствующих файлов.

Очень хороший, очень быстрый, очень солидный. mdfind 'kMDItemTextContent="*text*"c' -onlyin

введите описание изображения здесь

Перейдите к папке, которую вы хотите найти, если у вас есть.

введите описание изображения здесь

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

введите описание изображения здесь

После того, как вы начнете печатать или нажмете ввод, вы увидите раздел под окном поиска слева, который гласит:

Поиск: Этот Mac " Ваша папка " поделился

Если вы хотите выполнить поиск по всему компьютеру, нажмите «Этот Mac». В противном случае нажмите на название папки рядом с ним. Это может быть уже выбрано.

введите описание изображения здесь

Справа от этих опций находится кнопка «Сохранить» со знаком плюс.

введите описание изображения здесь

Нажмите на знак плюс. Вы увидите два выпадающих списка. В первом выберите «Вид». Во втором выберите «Любой» или «Текст».

введите описание изображения здесь

Выбор «Любой» может найти больше совпадений, в то время как «Текст» найдет файлы, которые Mac OS X определит, попадающие в категорию «Текст».

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

К вашему сведению, я заметил, что иногда для поиска требуется время, а иногда нет никаких признаков того, что Finder что-то делает. Я бы не стал слишком долго ждать, но если вы ищете маленькую папку, она должна быть очень быстрой. Поиск в вашем Mac может занять до минуты или более.

Примечание: чтобы найти точную фразу, заключите ее в кавычки.

Я бы посоветовал вам взглянуть на File Content Finder в App Store (отказ от ответственности - я его разработчик). Это доступное приложение, специально предназначенное для поиска содержимого файла без индексации. Он поддерживает текстовые файлы и другие основные форматы файлов (pdf, doc (x), xls (x) и т. Д.).

Его фильтрация позволяет оптимизировать и уточнить поиск по нескольким критериям - типу файла, дате создания / изменения и т. Д.

Вот подробная документация о том, как это работает.

Для более быстрой скорости поиска, вы можете использовать ag (серебряный искатель)

Можно искать конкретные слова, фразы, цифры и символы, а также автоматически заменять результаты поиска заданным содержимым. В поиск включается все видимое содержимое: основной текст, строки и столбцы заголовков, строки итогов, таблицы, текстовые блоки, фигуры, обычные и заключительные сноски, а также комментарии.

Поиск определенного текста

Нажмите в панели инструментов, затем выберите «Показать "Найти и заменить"».

В поле поиска введите слово или фразу, чтобы их найти.

Найденные вхождения сразу же выделяются.

Если при поиске требуется учитывать регистр или включить в результаты только вхождения целых слов, нажмите , затем выберите «Целые слова» и/или «Учитывать регистр».

Нажимайте кнопки со стрелками, чтобы найти следующее или предыдущее вхождение.

В ячейках таблиц Pages проверяется только отображаемое значение, исходное значение или формула не проверяются. Например, если в рецепте сказано «1/2 стакана», то поиск «0,5» не даст результатов.

Для просмотра или удаления результатов недавних операций поиска нажмите значок увеличительного стекла в поле поиска.

Замена найденного текста

Нажмите в панели инструментов, затем выберите «Показать "Найти и заменить"».

Нажмите в окне «Найти и заменить», затем выберите «Найти и заменить».

Вы также можете выбрать другие параметры, такие как «Целые слова» и «Учитывать регистр», чтобы сузить поиск.

Введите слово или фразу в первом поле.

Найденные вхождения сразу же выделяются. Первое вхождение выбирается и выделяется желтым цветом.

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

Важно! Если оставить поле «Заменить» пустым, все найденные вхождения при замене будут просто удалены.

Для просмотра и замены вхождений пользуйтесь кнопками в нижней части окна «Найти и заменить».

Заменить все. Все найденные вхождения заменяются введенным текстом-заменой.

Заменить и найти. Выбранное вхождение заменяется, и приложение переходит к следующему вхождению.

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

При изменении значения данных обновляется как отображаемое значение, так и исходное значение. Например, если заменить «1/2» на «1/3», исходное значение изменится с «0,5» на «0,333333».

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

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

Вот некоторые ключевые особенности Find & Replace It !:
* Найти и заменить сразу по нескольким файлам
* Выполнить несколько различных операций замены
* Поддерживает синтаксис регулярных выражений
* Позволяет многострочный поиск
* Поддерживает много текстовых кодировок, включая Unicode
* Сохраняет окончания строк при обработке файлов
* Сохраняет спецификацию при обработке файлов Unicode
* Позволяет выполнять динамические замены текста на основе найденных выражений
* Обеспечивает встроенную функцию обработки для динамических замен
* Предоставляет JavaScript-подобный интерфейс для настройки замен на лету при обработке сценариев
* Отображает отчеты о совпадениях выражений для операций поиска / замены файлов
* Полнофункциональный динамический предварительный просмотр совпавших выражений и замен
* Предоставляет инструменты для преобразования кодировки текста
* Предоставляет инструменты для преобразования концов строк (EOL)
* Обнаруживает кодировку текста и окончания строк файлов
* Предоставляет расширенные параметры фильтрации для выбора файлов, которые должны быть обработаны, включая фильтры имен файлов и фильтры исключения путей к файлам
* Позволяет загружать и сохранять выражения для поиска, замены определений и файловых фильтров
* Обрабатывает огромные файлы (> 10 ГБ)
* Редактор регулярных выражений / тестер
* Полностью многопоточный для максимальной производительности и отличной отзывчивости
* Позволяет отменить длительные операции
* GUI полностью модульный
* Создает резервную копию измененных файлов, если требуется
* Экспорт поиска и замены отчетов
* Кроссплатформенность: Windows, Mac OS X и Linux

В оболочке linux следующая команда будет рекурсивно искать и заменять все экземпляры 'this' на "это" (у меня нет оболочки Linux передо мной, но она должна делать).

Как будет выглядеть аналогичная команда в OSX?

ОТВЕТЫ

Ответ 1

OS X использует сочетание инструментов BSD и GNU, поэтому лучше всегда проверять документацию (хотя у меня было такое, что даже less не соответствовало man-странице OS X):

Sed принимает аргумент после -i как расширение для резервных копий. Укажите пустую строку ( -i '' ), чтобы не было резервных копий.

Следующее должно сделать:

LC_ALL=C find. -type f -name '*.txt' -exec sed -i '' s/this/that/<> +

-type f - просто хорошая практика; Сед будет жаловаться, если вы дадите ему каталог или около того. -exec предпочтительнее xargs ; вам не нужно беспокоиться о -print0 или о чем-то еще. <> + В конце означает, что команда find будет добавлять все результаты в качестве аргументов к одному экземпляру вызываемой команды вместо повторного запуска для каждого результата. (Единственное исключение - это когда максимальное количество аргументов командной строки, разрешенных ОС, нарушается; в этом случае find запускает более одного экземпляра.)

Ответ 2

Для mac, более похожий подход будет таким:

Ответ 3

Как альтернативное решение, я использую этот вариант на Mac OSX 10.7.5

Ответ 4

В Mac OSX 10.11.5 это отлично работает:

Ответ 5

Ничего из вышеперечисленного не работает в OSX.

Выполните следующие действия:

Ответ 6

Версия, которая работает как на Linux, так и на Mac OS X (добавив переключатель -e в sed ):

Ответ 7

Это моя работоспособная. на Mac OS X 10.10.4

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

Ответ 8

Если вы используете zsh-терминал, вы можете использовать магию подстановочных знаков:

sed -i "" "s/search/high-replace/g" *.txt

Ответ 9

Всякий раз, когда я набираю эту команду, мне всегда кажется, что она ее подвешивает или забывает флаг. Я создал Gist на github, основанный на ответе TaylanUB, который заменяет глобальную находку из текущего каталога. Это специфический Mac OSX.

Это хорошо, потому что теперь я просто открываю терминал, а затем копирую в:

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

Ответ 10

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

Ответ 11

Обратитесь сюда для получения дополнительной информации.

Ответ 12

Я использовал этот формат - но. я обнаружил, что мне нужно было запустить его три или более раз, чтобы заставить его фактически изменять каждый экземпляр, что мне показалось очень странным. Запуск его один раз изменит некоторые в каждом файле, но не во всех. Выполнение одной и той же строки два-четыре раза перехватит все экземпляры.

Ответ 13

Команда OSX должна быть точно такой же, как и Unix под симпатичным интерфейсом.

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