Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как в ubuntu найти файл


Команда find в Linux | Losst

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.

Содержание статьи:

Основная информация о Find

Find - это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find [папка] [параметры] критерий шаблон [действие]

Папка - каталог в котором будем искать

Параметры - дополнительные параметры, например, глубина поиска, и т д

Критерий - по какому критерию будем искать: имя, дата создания, права, владелец и т д.

Шаблон - непосредственно значение по которому будем отбирать файлы.

Основные параметры команды find

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

  • -P никогда не открывать символические ссылки
  • -L - получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth - максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth - искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version - показать версию утилиты find
  • -print - выводить полные имена файлов
  • -type f - искать только файлы
  • -type d - поиск папки в Linux

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name - поиск файлов по имени
  • -perm - поиск файлов в Linux по режиму доступа
  • -user - поиск файлов по владельцу
  • -group - поиск по группе
  • -mtime - поиск по времени модификации файла
  • -atime - поиск файлов по дате последнего чтения
  • -nogroup - поиск файлов, не принадлежащих ни одной группе
  • -nouser - поиск файлов без владельцев
  • -newer - найти файлы новее чем указанный
  • -size - поиск файлов в Linux по их размеру

Примеры использования

А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.

1. Поиск всех файлов

Показать все файлы в текущей директории:

find

find .

find . -print

2. Поиск файлов в определенной папке

Показать все файлы в указанной директории:

find ./test

Искать файлы по имени в текущей папке:

find . -name "*.jpg"

Не учитывать регистр при поиске по имени:

find . -iname "test*"

3. Ограничение глубины поиска

Поиска файлов по имени в Linux только в этой папке:

find . -maxdepth 1 -name "*.php"

4. Инвертирование шаблона

Найти файлы, которые не соответствуют шаблону:

find . -not -name "test*"

5. Несколько критериев

Поиск командой find в Linux по нескольким критериям, с оператором исключения:

find . -name "test" -not -name "*.php"

Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:

find -name "*.html" -o -name "*.php"

6. Несколько каталогов

Искать в двух каталогах одновременно:

find ./test ./test2 -type f -name "*.c"

7. Поиск скрытых файлов

Найти скрытые файлы:

find ~ -type f -name ".*"

8. Поиск по разрешениям

Найти файлы с определенной маской прав, например, 0664:

find . type f -perm 0664

Найти файлы с установленным флагом suid/guid:

find / -perm 2644

Или так:

find / -maxdepth 2 -perm /u=s

Поиск файлов только для чтения:

find /etc -maxdepth 1 -perm /u=r

Найти только исполняемые файлы:

find /bin -maxdepth 2 -perm /a=x

9. Поиск файлов по группах и пользователях

Найти все файлы, принадлежащие пользователю:

find . -user sergiy

Поиск файлов в Linux принадлежащих группе:

find /var/www -group developer

10. Поиск по дате модификации

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

 find / -mtime 50

Поиск файлов в Linux открытых N дней назад:

find / -atime 50

Найти все файлы, модифицированные между 50 и 100 дней назад:

find / -mtime +50 –mtime -100

Найти файлы измененные в течении часа:

find . -cmin 60

11. Поиск файлов по размеру

Найти все файлы размером 50 мегабайт:

find / -size 50M

От пятидесяти до ста мегабайт:

find / -size +50M -size -100M

Найти самые маленькие файлы:

find . -type f -exec ls -s {} \; | sort -n -r | head -5

Самые большие:

find . -type f -exec ls -s {} \; | sort -n | head -5

12. Поиск пустых файлов и папок

find /tmp -type f -empty

$ find ~/ -type d -empty

13. Действия с найденными файлами

Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:

find . -exec ls -ld {} \;

Удалить все текстовые файлы в tmp

find /tmp -type f -name "*.txt" -exec rm -f {} \;

Удалить все файлы больше 100 мегабайт:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Выводы

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

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

Загрузка...

Поиск файлов в Linux или Изучаем команду find

Автор: Нагибин Владимир. Дата статьи: 26.03.2010 г.

Несомненно, при работе с Linux, иногда возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, права доступа и другое.

Наличие в Linux команды find, во многом помогает справиться с поиском файлов по различным критериям.

Сегодня мы разберем поиск файлов в Linux и приведем основные опции команды find, которые вы сможете применить в своей работе.


Формат команды find:

find путь -опции

где  путь - это каталог, в котором произвести поиск. В качестве пути можно указывать следующие значения:

.    - поиск в текущем каталоге;

/   - поиск от корневого каталога;

~  - поиск в домашнем каталоге.

Что до опций, то тут гораздо бОльший список, с которым крайне необходимо внимательно ознакомиться (это в будущем очень поможет!). Итак, основные опции команды find:

-name         -  поиск файлов по имени, используя приведенный шаблон;

-user           -  поиск файлов, принадлежащих указанному пользователю;

-group        -  поиск файлов, принадлежащих указанной группе;

-perm         -  поиск файлов с указанным режимом доступа;

-type          -  поиск файлов определенного типа. Типов тоже достаточно:


  • b  - специальный блочный файл;

  • d  - каталог;

  • c  - специальный символьный файл;

  • f   - обычный файл;

  • l   - символическая ссылка;

  • p  - именованный канал;

  • s  - сокет.


-size  n       -  поиск файлов с размером n единиц;

-mtime  -n n   - поиск файлов, содержание которых изменялось менее чем (-) или более чем ( ) дней назад.

Рассмотрим некоторые примеры применения команды find:

Наиболее часто применяемой опцией является опция -name, которая производит поиск файлов по имени.

Примеры с опцией -name:

 $ find /mnt/usb -name  "*.mp3" -print

произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение .mp3 на USB-устройстве, смонтированном в каталог /mnt/usb.

команда

$ find ~ -name "test*" -print

выведет на экран список файлов домашнего каталога, начинающихся на test.

Если вам надо найти файлы, начинающиеся с определенных букв (к примеру, от a до j),  то здесь будет удобно применить регулярные выражения, которые крайне удобны в работе:

$ find  / -name "[a-j]*" -print

Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до j.

Поиск файлов с определенными режимами доступа

Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm, которая легко в этом поможет.

К примеру, выполним поиск файлов с режимом доступа 775  (владелец и группа имеют полные права и ограничение на запись имеют остальные пользователи), находящихся в текущем каталоге :

$ find .  -perm 775 -print

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

К примеру, найдем файлы,  к которым пользователи группы имеют полный доступ:

$ find . -perm -070 -print

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

Поиск файлов определенного пользователя или группы

Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:

$ find / -user admin -print

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

Для того, чтобы найти файлы, принадлежащие определенной группе (к примеру managers), выполним команду:

$ find / -group managers -print

Для поиска файлов несуществующих пользователей или групп можно воспользоваться опциями -nouser  и -nogroup:

$ find / -nouser -print

и

$ find / -nogroup -print

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

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

Поиск символических ссылок в каталоге /etc:

$ find /etc -type l -print

Вывод на экран списка каталогов, присутствующих в каталоге /mnt/raid

$ find /mnt/raid -type d -print

Поиск файлов определенного размера

Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:

$ find . -size 2000k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру,  необходимо найти файлы размером менее 500 килобайт, то вид команды будет следующий:

$ find . -size -500k -print

Если нужно найти файлы размером более 600 мегабайт, то применим команду:

$ find / -size 600M -print

Поиск файлов с использованием опции -mtime

Опция -mtime позволит вам найти файлы, изменявшиеся в какой-то срок времени.

К примеру, у нас встала задача поиска файлов, находящихся в каталоге /mnt/raid/upload , и изменявшихся за последние 5 дней. В этом нам поможет команда:

$ find /mnt/raid/upload -mtime -5 -print

Если нам необходимо обратное, к примеру, отыскать файлы, которые не изменялись неделю, применим команду:

$ find /mnt/raid/upload  -7 -print

Команда find является крайне удобным инструментом для поиска файлов и может использоваться также и для поиска файлов на дисках NFS (сетевых файловых системах), но в этом случае необходимо учесть, что времени на поиск чего-либо на NFS уйдет гораздо больше, чем на локальных дисках.

В этой статье мы рассмотрели лишь основные опции команды find, которые помогут вам в вашей работе. Используйте то, что удобно и не переживайте по пустякам!

Поиск файла в Linux | Losst

В операционных системах семейства Linux все объекты ОС: и данные, и управляющие элементы - являются файлами в файловой системе. Поэтому поиск файлов становится очень важной задачей. И если опытные пользователи уже знают, что и где находится, то для новичков будет очень полезным узнать, как найти местоположение того или иного файла, будь то программа, изображение или документ.

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

Содержание статьи:

Поиск файла в Linux через графический интерфейс

1. Главное меню системы

Главное меню операционной системы позволяет, как правило, не только запускать программы, но и искать их, а также искать файлы. Такая возможность есть как в Gnome, так и в KDE. В главном меню Gnome вы можете ввести нужную фразу для поиска:

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

2. Файловые менеджеры

Большинство файловых менеджеров тоже предоставляют возможности поиска файлов, в том числе Dolphin и Nautilus. Здесь вы можете выбрать папку, в которой будет выполняться поиск, а также настроить дополнительные параметры поиска. В Nautilus для запуска поиска вам достаточно нажать кнопку со значком лупы, а потом ввести данные в строку поиска. Например, найдём все фото, сделанные 18 ноября.

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

В качестве поискового запроса можно использовать символы подстановки: ? и *. Но для более точного поиска придётся использовать сторонние программы.

3. Gnome Search

Утилита Gnome Search по умолчанию поставляется не всегда, но вы можете установить её из центра приложений или через официальные репозитории. Она предоставляет такие же возможности, как и файловый менеджер, плюс здесь можно искать по содержимому файлов, что иногда очень удобно.

 

4. SearchMonkey

Следующая программа в нашем списке - SearchMonkey. Она позволяет искать файлы по регулярным выражениям. Здесь тоже можно выполнять поиск файла, как по имени, так и по содержимому фала, можно выбрать диапазон дат и так далее. Но основное преимущество этой программы - возможность везде использовать регулярные выражения.

5. Recoll

Если вам приходится работать с большой библиотекой текстовой информации и искать данные по содержимому файла, то вам будет полезна утилита Recoll. Это полноценный поисковый движок для поиска документов. Установить программу можно из официальных репозиториев:

sudo apt install recoll

Сразу же после запуска она предложит вам создать индекс документов, которые есть в вашем домашнем каталоге.

И только после создания индекса вы сможете выполнять по нему поиск. Далее, вам будет достаточно ввести запрос, например Wi-Fi, и вы увидите все файлы, которые содержат это слово с примерами вхождений, отсортированные по релевантности:

Для работы с большим количеством текстовых данных это может быть очень удобно. Программа понимает множество офисных форматов, среди которых pdf, djvu, doc, docx, odf, а также умеет находить такие файлы в архивах.

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

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

1. find

Самая часто используемая команда поиска файла в Linux на данный момент - это find. Она имеет множество возможностей: вы можете искать файлы по имени, дате изменения, создания, использовать регулярные выражения и маски, выполнять определённые действия для найденных файлов, настраивать глубину поиска и многое другое. Например, найдем все файлы, которые начинаются на "Снимок" в папке ~/Изображения:

find ~/Изображения -iname "Снимок*"

Более подробную информацию об этой команде читайте в статье команда find.

2. locate

Команда locate считается устаревшей и уже была удалена из многих дистрибутивов. Она выполняет поиск не в реальном времени, как find, а по ранее созданной базе файлов, но она делает только поиск файла по имени Linux. Вы вводите слово, которое вас интересует, и утилита выдаёт все известные ей файлы, имя которых содержит такое слово. Возможно использовать регулярные выражения. Например, найдем все файлы, в имени которых содержится passwd:

locate passwd

Обратите внимание, что если файл был добавлен после создания базы, то он найден не будет.

3. grep

Утилита grep позволяет не только фильтровать вывод других команд, но и искать по содержимому файловой системы. Для этого достаточно использовать опцию -r и указать папку, в которой надо искать текст. Например, найдём все файлы в /etc/, которые содержат строчку error_reporting:

sudo grep -r "error_reporting" /etc/

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

4. whereis

Утилита whereis достаточно простая и решает только одну задачу. Она показывает, где находится исполняемый файл, переданной ей программы. Например, если мы хотим узнать, где лежит grep, достаточно выполнить:

whereis grep

Выводы

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

Как сделать поиск файлов в Linux

Во время работы в любой операционной системе иногда возникает потребность в использовании инструментов для быстрого поиска того или иного файла. Актуально это и для Linux, поэтому ниже будут рассмотрены все возможные способы поиска файлов в этой ОС. Представлены будут как инструменты файлового менеджера, так и команды, используемые в «Терминале».

Читайте также:
Переименовываем файлы в Linux
Создаем и удаляем файлы в Linux

Терминал

Если вам необходимо задать множество параметров поиска для нахождения нужного файла, то команда find незаменима. Перед рассмотрением всех ее вариаций стоит пройтись по синтаксису и опциям. Синтаксис она имеет следующий:

find путь опция

где путь — это директория, в которой будет происходить поиск. Есть три основных варианта указания пути:

  • / — поиск по корневой и прилегающим к ней директориям;
  • ~ — поиск по домашней директории;
  • ./ — поиск в директории, в которой пользователь находится в настоящий момент.

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

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

  • -name — проводить поиск, беря за основу имя искомого элемента;
  • -user — искать файлы, которые относятся к определенному пользователю;
  • -group — проводить поиск по определенной группе пользователей;
  • -perm — показывать файлы с указанным режимом доступа;
  • -size n — искать, беря за основу размер объекта;
  • -mtime +n -n — проводить поиск файлов, которые изменялись более (+n) или менее (-n) дней назад;
  • -type — искать файлы определенного типа.

Типов искомых элементов тоже много. Вот их список:

  • b — блочный;
  • f — обычный;
  • p — именованный канал;
  • d — каталог;
  • l — ссылка;
  • s — сокет;
  • c — символьный.

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

Читайте также: Популярные команды в «Терминале» Linux

Способ 1: Поиск по имени (опция -name)

Чаще всего пользователи для осуществления поиска по системе используют опцию -name, так что именно с нее и начнем. Разберем несколько примеров.

Поиск по расширению

Допустим, вам нужно найти в системе файл с расширением «.xlsx», который находится в директории «Dropbox». Для этого необходимо использовать следующую команду:

find /home/user/Dropbox -name "*.xlsx" -print

Из ее синтаксиса можно сказать, что поиск проводится в директории «Dropbox» («/home/user/Dropbox»), а искомый объект должен быть с расширением «.xlsx». Звездочка свидетельствует о том, что поиск будет проведен по всем файлам этого расширения, не беря во внимание их название. «-print» указывает на то, что результаты поиска будут выведены на экран.

Пример:

Поиск по имени файла

Например, вы хотите отыскать в директории «/home» файл с названием «lumpics», но расширение его неизвестно. В таком случае нужно выполнить следующее:

find ~ -name "lumpics*" -print

Как можно заметить, здесь используется символ «~», который означает, что поиск будет проходить в домашней директории. После опции «-name» указано имя искомого файла («lumpics*»). Звездочка в конце означает что поиск будет проходить только по имени, не учитывая расширение.

Пример:

Поиск по первой букве в имени

Если вы помните только первую букву, с которой начинается название файла, то существует специальный синтаксис команды, который вам поможет его отыскать. Например, вы хотите найти файл, который начинается с буквы от «g» до «l», и вы не знаете в каком каталоге он находится. Тогда вам необходимо выполнить следующую команду:

find / -name "[g-l]*" -print

Судя по символу «/», что идет сразу после основной команды, поиск будет проведен, начиная с корневого каталога, то есть во всей системе. Далее, часть «[g-l]*» означает, что искомое слово будет начинаться с определенной буквы. В нашем случае от «g» до «l».

К слову, если вы знаете расширение файла, то после символа «*» можете его указать. Например, вам надо найти тот же файл, но вы знаете, что он имеет расширение «.odt». Тогда можно использовать такую команду:

find / -name "[g-l]*.odt" -print

Пример:

Способ 2: Поиск по режиму доступа (опция -perm)

Иногда необходимо найти объект, имя которого вы не знаете, но знаете каким режимом доступа он обладает. Тогда вам нужно применять опцию «-perm».

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

find ~ -perm 775 -print

То есть поиск проводится в домашнем разделе, а искомые объекты будут обладать доступом 775. Также вы можете перед этим числом прописать символ «-», тогда найденные объекты будут иметь биты разрешений от нуля до указанного значения.

Способ 3: Поиск по пользователю или группе (опции -user и -group)

В любой операционной системе есть пользователи и группы. Если вы хотите найти объект, принадлежащий одной из этих категорий, то для этого можете использовать опцию «-user» или «-group», соответственно.

Поиск файла по имени его пользователя

Например, вам нужно найти в директории «Dropbox» файл «Lampics», но вы не знаете как он называется, а знаете только что он принадлежит пользователю «user». Тогда вам нужно выполнить следующую команду:

find /home/user/Dropbox -user user -print

В данной команде вы указали необходимую директорию (/home/user/Dropbox), указали что нужно искать файл, принадлежащий пользователю (-user), и указали, какому именно пользователю этот файл принадлежит (user).

Пример:

Читайте также:
Как посмотреть список пользователей в Linux
Как добавить пользователя в группу в Linux

Поиск файла по названию его группы

Выполнить поиск файла, который принадлежит определенной группе, точно так же просто — вам нужно всего-навсего заменить опцию «-user» на опцию «-group» и указать название этой группы:

find / -groupe guest -print

То есть вы указали, что хотите отыскать в системе файл, относящийся к группе «guest». Поиск будет происходить по всей системе, об этом свидетельствует символ «/».

Способ 4: Поиск файла по его типу (опция -type)

Найти какой-то элемент в Linux определенного типа довольно просто, вам нужно всего лишь указать соответствующую опцию (-type) и обозначить тип. В начале статьи были перечислены все обозначения типов, которые можно применять для поиска.

Например, вы хотите отыскать все блочные файлы в домашней директории. В этом случае ваша команда будет выглядеть так:

find ~ -type b -print

Соответственно, вы указали что проводите поиск по типу файла, о чем свидетельствует опция «-type», а далее определили его тип, поставив символ блочного файла — «b».

Пример:

Точно так же вы можете вывести на экран все каталоги в нужной директории, вписав в команду символ «d»:

find /home/user -type d -print

Способ 5: Поиск файла по размеру (опция -size)

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

find /home/user/Dropbox -size 120M -print

Пример:

Читайте также: Как узнать размер папки в Linux

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

find / -size 120M -print

Пример:

Если вы знаете размер файла приблизительно, то и на этот случай есть специальная команда. Вам нужно прописать в «Терминале» то же самое, только перед указанием размера файла поставить знак «-» (если нужно найти файлы меньше указанного размера) или «+» (если размер искомого файла будет больше указанного). Вот пример такой команды:

find /home/user/Dropbox +100M -print

Пример:

Способ 6: Поиск файла по дате изменения (опция -mtime)

Бывают случаи, когда удобнее всего проводить поиск файла по дате его изменения. В Linux для этого применяется опция «-mtime». Пользоваться ей довольно просто, рассмотрим все на примере.

Допустим, в папке «Изображения» нам нужно найти объекты, которые подвергались изменениям последние 15 суток. Вот что нужно прописать в «Терминале»:

find /home/user/Изображения -mtime -15 -print

Пример:

Как можно заметить, эта опция показывает не только файлы, изменявшиеся за указанный срок, но и папки. Работает она и в обратную сторону — вы можете найти объекты, которые были изменены позже указанного срока. Для этого нужно перед цифровым значением вписать знак «+»:

find /home/user/Изображения -mtime +10 -print

GUI

Графический интерфейс во многом облегчает жизнь новичкам, которые только установили дистрибутив Linux. Данный метод поиска очень похож на тот, что осуществляется в ОС Windows, хотя и не может дать всех тех преимуществ, что предлагает «Терминал». Но обо всем по порядку. Итак, рассмотрим, как сделать поиск файлов в Linux, используя графический интерфейс системы.

Способ 1: Поиск через меню системы

Сейчас будет рассмотрен способ поиска файлов через меню системы Linux. Проводимые действия будут выполняться в дистрибутиве Ubuntu 16.04 LTS, однако инструкция общая для всех.

Читайте также: Как узнать версию дистрибутива Linux

Допустим, вам необходимо найти в системе файлы под именем «Найди меня», также этих файлов в системе два: один в формате «.txt», а второй — «.odt». Чтобы их отыскать, необходимо изначально нажать на иконку меню (1), и в специальном поле для ввода (2) указать поисковый запрос «Найди меня».

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

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

Расположен он в правой части меню. Фильтровать вы можете по двум критериям: «Категории» и «Источники». Разверните эти два списка, нажав по стрелочке рядом с названием, и в меню уберите выделения с ненужных пунктов. В данном случае разумнее будет оставить лишь поиск по «Файлы и папки», так как мы ищем именно файлы.

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

Способ 2: Поиск через файловый менеджер

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

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

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

Как и в предыдущем способе, в этом точно так же можно использовать фильтр. Для его открытия нажмите на кнопку со знаком «+», расположенную в правой части поля ввода поискового запроса. Откроется подменю, в котором вы можете из выпадающего списка выбрать искомый тип файла.

Заключение

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

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Поиск внутри файлов в Linux

Иногда может понадобится найти файл, в котором содержится определённая строка или найти строку в файле, где есть нужное слово. В Linux всё это делается с помощью одной очень простой, но в то же время мощной утилиты grep. С её помощью можно искать не только строки в файлах, но и фильтровать вывод команд, и много чего ещё.

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

Содержание статьи:

Что такое grep?

Команда grep (расшифровывается как global regular expression print) - одна из самых востребованных команд в терминале Linux, которая входит в состав проекта GNU. Секрет популярности - её мощь, она даёт возможность пользователям сортировать и фильтровать текст на основе сложных правил.

Утилита grep решаем множество задач, в основном она используется для поиска строк, соответствующих строке в тексте или содержимому файлов. Также она может находить по шаблону или регулярным выражениям. Команда в считанные секунды найдёт файл в с нужной строчкой, текст в файле или отфильтрует из вывода только пару нужных строк. А теперь давайте рассмотрим, как ей пользоваться.

Синтаксис grep

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

$ grep [опции] шаблон [имя файла...]

Или:

$ команда | grep [опции] шаблон

  • Опции - это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
  • Шаблон - это любая строка или регулярное выражение, по которому будет вестись поиск
  • Файл и команда - это то место, где будет вестись поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.

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

Опции

Давайте рассмотрим самые основные опции утилиты, которые помогут более эффективно выполнять поиск текста в файлах grep:

  • -b - показывать номер блока перед строкой;
  • -c - подсчитать количество вхождений шаблона;
  • -h - не выводить имя файла в результатах поиска внутри файлов Linux;
  • -i - не учитывать регистр;
  • - l - отобразить только имена файлов, в которых найден шаблон;
  • -n - показывать номер строки в файле;
  • -s - не показывать сообщения об ошибках;
  • -v - инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
  • -w - искать шаблон как слово, окружённое пробелами;
  • -e - использовать регулярные выражения при поиске;
  • -An - показать вхождение и n строк до него;
  • -Bn - показать вхождение и n строк после него;
  • -Cn - показать n строк до и после вхождения;

Все самые основные опции рассмотрели и даже больше, теперь перейдём к примерам работы команды grep Linux.

Примеры использования

С теорией покончено, теперь перейдём к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.

Поиск текста в файлах

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

grep User /etc/passwd

В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:

User:x:1000:1000:User,,,:/home/User:/bin/bash

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

grep -i "user" /etc/passwd

Вывести несколько строк

Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону "EE":

grep -A4 "EE" /var/log/xorg.0.log

Выведет строку с вхождением и 4 строчки после неё:

grep -B4 "EE" /var/log/xorg.0.log

Выведет целевую строку и 4 строчки до неё:

grep -C2 "EE" /var/log/xorg.0.log

Выведет по две строки с верху и снизу от вхождения.

Регулярные выражения в grep

Регулярные выражения grep - очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола "^", например, выведем все сообщения за ноябрь:

grep "^Nov 10" messages.1

Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s
Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10

Поиск в конце строки - спецсимвол "$":

grep "terminating.$" messages

Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Найдём все строки, которые содержат цифры:

grep "[0-9]" /var/log/Xorg.0.log

Вообще, регулярные выражения grep - это очень обширная тема, в этой статье я лишь показал несколько примеров. Как вы увидели, поиск текста в файлах grep становиться ещё эффективнее. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим её и пойдем дальше.

Рекурсивное использование grep

Если вам нужно провести поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах, например в файлах конфигурации Apache - /etc/apache2/, используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займётся поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:

grep -r "mydomain.com" /etc/apache2/

В выводе вы получите:

grep -r "zendsite" /etc/apache2/
/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost
/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite
/etc/apache2/vhosts.d/zendsite_vhost.conf: <Directory /var/www/localhost/htdocs/zendsite>

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

grep -h -r "zendsite" /etc/apache2/

ServerName zendsite.localhost
DocumentRoot /var/www/localhost/htdocs/zendsite
<Directory /var/www/localhost/htdocs/zendsite>

Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:

grep -w "abc" имя_файла

Поиск двух слов

Можно искать по содержимому файла не одно слово, а два сразу:

egrep -w 'word1|word2' /path/to/file

Количество вхождений строки

Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):

grep -c 'word' /path/to/file

C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:

grep -n 'root' /etc/passwd

Получим:

1:root:x:0:0:root:/root:/bin/bash

Инвертированный поиск в grep

Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:

grep -v пар /path/to/file

Вывод имени файла

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:

grep -l 'primary' *.c

Цветной вывод в grep

Также вы можете заставить программу выделять другим цветом вхождения в выводе:

grep --color root /etc/passwd

Получится:

 

Выводы

Вот и всё. Мы рассмотрели использование команды grep для поиска и фильтрации вывода команд в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Если у вас остались вопросы, пишите в комментариях!

Как искать файлы в Linux с помощью команды find

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

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

Как использовать команду find

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

find /путь параметры имя_файла

Давайте разбираться с возможностями команды

Поиск файла по имени

Первый параметр — это путь. Если вы понятия не имеете, где может скрываться файл, ставьте вместо пути / — этого достаточно. Однако, поиск по всему диску может быть достаточно длительным, и если вы знаете, где может находиться файл, укажите папку, с которой надо начинать искать (например ~ для поиска в домашней папке пользователя).

Теперь перейдём к параметрам поиска. Есть два варианта поиска файла по имени:

  • name — поиск с учетом регистра имени файла
  • iname — поиск без учета регистра имени файла

Нужно помнить, что в Linux регистр имени файла имеет значение, и если нужно найти, например, файл Ubuntu.txt, то следующая команда не даст никаких результатов:

find / -name ubuntu.txt

Но можно воспользоваться командой iname и выполнить поиск без учета регистра:

find / -iname ubuntu.txt

Поиск по типу

Команда find позволяет искать не только файлы. Вот какие типы дескрипторов поддерживает поиск:

  • f — обычный файл
  • d — директория
  • l — символическая ссылка
  • c — символьное устройство
  • b — блочное устройство

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

find ~ -type d -name config*

Вывод результатов поиска в файл

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

find /etc -type f -name “*.conf” > conf_search

Поиск файлов по размеру

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

find / -size +1000M

Можно использовать следующие сокращения размеров:

  • c — байты
  • k — килобайты
  • M — мегабайты
  • G — гигабайты
  • b — блоки по 512 байт

Это всего несколько способов применения мощной команды . Больше способов можно найти в руководстве, выполнив команду

man find

находок - Community Help Wiki

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

Команда GNU find является частью GNU findutils и устанавливается в каждой системе Ubuntu. findutils фактически состоит из 4 утилит:

  1. find - поиск файлов в иерархии каталогов, независимо от того, является ли это база данных или нет

  2. найти - список файлов в базах данных, соответствующих шаблону, т.е.е. найти в списке updatedb

  3. updatedb - обновить базу данных имен файлов, то есть собрать только db , например sqlite

  4. xargs - создать и выполнить командные строки из стандартного ввода - обычно вы это делаете напрямую без xargs

Эта вики-страница будет иметь дело только с find, а также кратко упомянуть xargs. Надеюсь, что в ближайшем будущем locate и updatedb будут освещены на отдельной странице.«find», как и «locate», также может находить файлы базы данных, но «locate» более специализирован для этой задачи. Вы должны запустить updateb перед использованием locate, который полагается на данные, созданные "updateDB".

 find ~ -name readme.txt 

найдет этот файл под домашним каталогом. find работает невероятно быстро при втором запуске! Вы можете выполнить поиск по всему / корневому-каталогу всего за прибл. 3 секунды (при втором запуске, когда кэш активен) на жестком диске ext4-fs емкостью 500 ГБ.

Синтаксис для использования find:

 find [-H] [-L] [-P] [путь ...] [выражение] 

3 варианта [-H] [-L] [-P] не часто встречаются, но, по крайней мере, следует отметить, если только вы понимаете, что опция -P будет иметь значение по умолчанию , если не указан другой параметр:

  • -H: не переходить по символическим ссылкам, кроме как при обработке аргументов командной строки .
  • -L: переходите по символическим ссылкам.
  • -P: Никогда не переходить по символическим ссылкам: параметр по умолчанию.

Параметр [путь ...] относится к конкретному местоположению, в котором вы хотите выполнить поиск, будь то ваш каталог $ HOME, конкретный каталог, такой как / usr, ваш текущий рабочий каталог, который можно просто выразить как '. ' или весь ваш компьютер, что может быть выражено как '/'.

Параметр [выражение] относится к одному или ряду параметров, которые влияют на общий параметр команды поиска. Эти параметры могут включать поиск по имени, размеру, времени доступа или могут также включать действия, предпринимаемые с этими файлами.

Поиск файлов по имени

Чаще всего find используется для поиска определенного файла по его имени. Следующая команда выполняет поиск в домашнем каталоге и во всех его подкаталогах в поисках файла mysong.ogg:

 find $ HOME -name 'mysong.ogg' 

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

 find $ HOME -iname '* .ogg '

Здесь опция' -iname 'выполняет поиск без учета регистра, в то время как подстановочный знак' * 'соответствует любому символу, количеству символов или нулю. Чтобы выполнить тот же поиск на всем диске , вы должны запустить:

 sudo find / -iname '*.ogg '

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

Поиск файлов по размеру

Другой возможный поиск - поиск файлов размером .Чтобы продемонстрировать это, мы можем снова выполнить поиск в домашнем каталоге файлов Ogg Vorbis, но на этот раз искать файлы размером 100 мегабайт или больше:

 find $ HOME -iname '* .ogg' -size + 100M 

Есть несколько вариантов с -size, здесь я использовал «M» для «мегабайт», но можно использовать «k» для «килобайт» или «G» для «гигабайт». Затем этот поиск можно изменить для поиска файлов только тех, которые меньше , чем 100 мегабайт:

 find $ HOME -iname '* .ogg' -type f -size -100M 

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

Поиск файлов по времени доступа

Также возможно найти файлы по времени их доступа или времени, когда они в последний раз использовались или просматривались системой. Например, чтобы показать все файлы, к которым не было доступа в каталоге $ HOME в течение 30 или более дней:

 find $ HOME -atime +30 

Этот тип поиска обычно более полезен в сочетании с другими поисками find. Например, можно найти все файлы ogg в каталоге $ HOME, время доступа которых превышает 30 дней:

 find $ HOME -iname '*.ogg '-atime +30 

Синтаксис работает слева направо, и по умолчанию find объединяет 2 выражения с подразумеваемым «и». Более подробно это рассматривается в разделе «Объединение поисковых запросов» ниже.

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

Объединение результатов поиска

При использовании find можно комбинировать поиски с использованием того, что на страницах руководства find известно как операторы .Это

, как в

 find ~ -name 'xx *' -and -not -name 'xxx' 

, если вы не предпочитаете загадочный синтаксис ниже (-o вместо -or)

Классический пример: использование логического И синтаксиса:

 find $ HOME -iname '* .ogg' -size + 20M 

Этот поисковый поиск сначала выполняет поиск без учета регистра для всех файлов ogg в вашем каталоге $ HOME и для всех истинных результатов Затем он ищет те, размер которых составляет 20 мегабайт и более.Он содержит и подразумевает оператор, который можно записать вместе с -a . Этот поиск можно немного изменить, используя восклицательный знак для обозначения отрицания результата:

 find $ HOME -iname '* .ogg'! -size + 20M 

Выполняет тот же поиск, что и раньше, но ищет файлы ogg размером , а не размером более 20 мегабайт. Также можно использовать логическое ИЛИ при поиске поиска:

 find $ HOME -iname '* .ogg' -o -iname '* .mp3' 

Это будет выполнять поиск без учета регистра в каталогах $ HOME и найти все файлы в формате ogg ИЛИ mp3.Здесь есть большие возможности для создания очень сложных и точно отточенных поисковых запросов, и я бы посоветовал внимательно прочитать справочные страницы find для поиска темы OPERATORS.

Работа с файлами

Один продвинутый, но очень полезный аспект использования поиска - это возможность выполнять действие, указанное пользователем, над результатом поиска. Например, следующий поиск ищет все файлы ogg vorbis в каталоге $ HOME, а затем использует -exec для передачи результата в программу du, чтобы указать размер каждого файла:

 find $ HOME -name '*.ogg '-type f -exec du -h' {} '\; 

Этот синтаксис часто используется для удаления файлов с помощью -exec rm -rf , но его следует использовать с большой осторожностью, если вообще, поскольку восстановление любых удаленных файлов может быть довольно трудным.

Использование xargs

xargs <<< / ls

так же, как: ls /

xargs передает здесь строку / в качестве параметра («аргумент») команде ls

При использовании действительно сложного поиска часто бывает полезно идея использовать другой член пакета findutils: xargs.Без его использования можно было увидеть сообщение Список аргументов слишком длинный , сигнализирующий о превышении предела ядра на объединенную длину командной строки и ее переменных среды. xargs работает, передавая результаты поиска последующей команде в пакетах, рассчитанных с учетом возможностей системы (на основе ARG_MAX). Пример:

 find / tmp -iname '* .mp3' -print0 | xargs -0 rm 

В этом примере выполняется поиск всех файлов mp3 в папке / tmp, а затем их удаление.Обратите внимание на использование -print0 и xargs -0 , что является преднамеренной стратегией, позволяющей избежать проблем с пробелами и / или новой строкой в ​​именах файлов. Современные ядра не имеют ограничения ARG_MAX, но для обеспечения переносимости результатов поиска рекомендуется использовать xargs в сложных поисках с последующими командами.


КатегорияCommandLine

.

Поиск файлов в командной строке (Как сделать)

К сожалению, в Linux, особенно в Ubuntu, поиск файлов с графическим интерфейсом пользователя по умолчанию - не самый полезный способ поиска файлов.

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

Найдите

Простая и быстрая команда называется «найти». Чтобы использовать эту команду в терминале, просто введите:

 $ locate -i searchstring 

Будет выполнен поиск всех файлов и каталогов, в названии которых есть «строка поиска», а -i означает, что поиск не чувствителен к регистру (т.е.е. он найдет строку поиска, строку поиска, sEaRcHsTrInG и так далее).

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

Принудительное обновление базы данных / индекса выполняется с помощью команды sudo updatedb , и это не занимает много времени.

Пример:

 $ найти -i omgubuntu.desktop 
Найдите

Вам доступна гораздо более мощная команда под названием «найти».

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

Синтаксис «найти»:

 $ find <где начать поиск> <критерии поиска> <действия, которые необходимо предпринять> 

Если вы не добавите никаких параметров, find по умолчанию будет искать в текущем рабочем каталоге (или «. “), не использует никаких критериев поиска (по умолчанию показывает все файлы) и -print (который, несмотря на свое имя, отображает или« печатает »результаты на экране) в качестве единственного действия, которое необходимо предпринять.

Два примера:

 $ sudo find / -type f -mmin -10 

В этом примере будут найдены (начиная с корневого каталога или / и рекурсивного поиска в подкаталогах) все обычные файлы ( -тип f означает обычные файлы, без этого он найдет обычные файлы + специальные файлы + каталоги), которые были изменены меньше чем десять минут назад (-mmin -10), а затем отобразить результаты для вас.

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

Вы можете добавить сюда sudo , потому что find не выполняет поиск файлов / каталогов, для которых у текущего пользователя нет разрешений, и будет возвращать сообщения об ошибках, если вы не являетесь sudoer - , просто будьте осторожны!

 $ find ~ -iname "* new *" -exec mv -v {} / media / current-projects / \; 

Это найдет все в вашем домашнем каталоге (~) с именем, нечувствительным к регистру (-iname), содержащим new («* new *») и выполнит (-exec) перемещение (mv) результатов ({}) в / media / current-projects / (\; требуется для -exec, чтобы показать конец выполняемой команды).Таким образом, все ваши файлы будут перемещены в одно место. mv -v отображает результаты команды перемещения с (-v) сообщениями erbose.

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

Catfish - это опция графического интерфейса

Для тех из вас, кто просто не может обойтись без графического интерфейса, вы можете найти программу Catfish в репозиториях - это позволяет запускать как locate , так и find из графического интерфейса, но это очень ограничено. в опциях.

Считайте Catfish эквивалентом Windows Search. Если вам нужны все возможности find, вам нужно будет запустить его из командной строки, следуя приведенным выше советам.

Установите Catfish из программного обеспечения Ubuntu

Какой метод поиска файлов вы предпочитаете? Ответьте ниже, и я пришлю его позже $ grep Nixie * . ;-)

Главная »Как сделать» Поиск файлов в командной строке (Как сделать)

.

Как найти файлы и каталоги в Linux

Обновлено: 30.11.2020 компанией Computer Hope

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

Базовая функциональность find

Запуск find без каких-либо параметров создает список всех файлов и каталогов внутри и ниже рабочего каталога. Например, если ваш рабочий каталог - / home / hope / Documents , запуск find выводит следующее:

  • Каждый файл в / home / hope / Documents .
  • Все подкаталоги в / home / hope / Documents .
  • Каждый файл в каждом из этих подкаталогов.

Давайте посмотрим на это в действии. Сначала давайте проверим наш рабочий каталог с помощью команды pwd:

 pwd 
 / на главную / надежда / Документы 

Теперь давайте запустим find без опций:

 найти 
. ./картинки ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

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

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

 находка. 

Пример выше - «правильный» способ использования find . Если вы попытаетесь использовать его в другой Unix-подобной операционной системе, такой как FreeBSD, необходимо указать каталог. Хорошая практика - использовать эту форму команды.

Указание, где искать

Чтобы вывести список только файлов и подкаталогов, содержащихся в каталоге / home / hope / Documents / images , укажите первый аргумент команды как:

 найти / главная / надежда / документы / изображения 
 / главная / надежда / Документы / изображения / главная / надежда / Документы / изображения / hp / главная / надежда / документы / изображения / hp / snape.jpg /home/hope/Documents/images/hp/harry.jpg / главная / надежда / Документы / изображения / мемы /home/hope/Documents/images/memes/winteriscoming.jpg /home/hope/Documents/images/memes/goodguygary.JPG /home/hope/Documents/images/memes/picard.jpg 

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

Если наш рабочий каталог - / home / hope / Documents , мы можем использовать следующую команду, которая находит те же файлы:

 наход. / Изображения 

Но на этот раз вывод отражает начальную точку поиска и выглядит так:

./картинки ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

По умолчанию поиск просматривает все подкаталоги исходного местоположения. Если вы хотите ограничить количество уровней подкаталога для поиска, вы можете использовать параметр -maxdepth с номером.

Например, указав -maxdepth 1 выполняет поиск только в каталоге, в котором начинается поиск.Если какие-либо подкаталоги найдены, они отображаются в списке, но не просматриваются.

 находка. -максглубина 1 
. ./картинки ./bigfiles.txt ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 2 ищет каталог и один подкаталог в глубине:

 находка. -максглубина 2 
. ./картинки ./images/hp ./images/memes ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.док ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 3 поиск на один уровень глубже этого:

 находка. -максглубина 3 
. ./картинки ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./ hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Нахождение по названию

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

 находка. -name "picard.jpg" 
 ./images/memes/picard.jpg 

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

 находка. -name "* .jpg" 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/picard.jpg 

Обратите внимание, что наша команда не перечислила файл с расширением (в данном случае JPG ) заглавными буквами.Это потому, что в отличие от других операционных систем, таких как Microsoft Windows, имена файлов Linux чувствительны к регистру.

Чтобы вместо этого выполнить поиск без учета регистра, используйте параметр -iname :

 находка. -iname "* .jpg" 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

Поиск только файлов или только каталогов

Чтобы перечислить только файлы и исключить имена каталогов из результатов, укажите -type f :

 находка.-типа f 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

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

 находка. -типа d 
. ./картинки ./images/hp ./images/memes ./hp-fanfic 

Поиск файлов по размеру

Чтобы отображать только файлы определенного размера, вы можете использовать параметр -размер . Чтобы указать размер, используйте знак плюс или минус (для «больше чем» или «меньше чем»), число и количественный суффикс, например k , M или G .

Например, чтобы найти файлы размером «более 50 килобайт», используйте -size + 50k :

 находка.-размер + 50к 
 ./images/memes/winteriscoming.jpg ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для файлов размером более 10 мегабайт используйте -size + 10M :

 находка. -размер + 10М 
 ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для «более 1 гигабайта» используйте -size + 1G :

 находка. -размер + 1G 
 ./archlinux-2016.02.01-dual.iso 

Для файлов определенного диапазона размеров используйте два параметра -size .Например, чтобы найти файлы «больше 10 мегабайт, но меньше 1 гигабайта», укажите -size + 10M -size -1G :

 находка. -размер + 10M -размер -1G 
 ./gimp-2.8.16.tar.bz2 

Поиск файлов на основе модификации, доступа или изменения статуса

Параметр -mtime ограничивает поиск количеством дней с момента изменения содержимого файла. Чтобы указать дни в прошлом, используйте отрицательное число. Например, чтобы найти только те файлы, которые были изменены за последние два дня (48 часов назад), используйте -mtime -2 :

 находка.-mtime -2 

Параметр -mmin делает то же самое, но в минутах, а не в днях. Например, эта команда показывает только файлы, измененные за последние полчаса:

 находка. -ммин -30 

Аналогичная опция - -ctime , которая проверяет время последнего изменения статуса файла в днях. Изменение статуса - это изменение метаданных файла. Например, изменение прав доступа к файлу - это изменение статуса.

Параметр -cmin выполняет поиск изменения состояния, измеряемого в минутах.

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

Параметр -amin выполняет то же ограничение поиска, но измеряется в минутах.

Перенаправление вывода в текстовый файл

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

 находка. -iname "* .jpg"> images.txt 

Затем вы можете открыть результаты в текстовом редакторе или распечатать их с помощью команды cat .

 кот images.txt 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

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

 находка.размер + 500M | тройник bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 
 кот bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 

Подавление сообщений об ошибках

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

 найти / 
 найти: `/ var / lib / sudo / ts ': в доступе отказано find: `/ var / lib / sudo / lectured ': в доступе отказано find: `/ var / lib / polkit-1 ': в доступе отказано find: `/ var / lib / container ': в доступе отказано найти: `/ var / lib / gdm3 /.dbus ': в доступе отказано find: `/var/lib/gdm3/.config/ibus ': в доступе отказано ... 

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

Если все, что вам нужно сделать, это скрыть сообщение «Permission denied»

.

linux - Ubuntu 13.04: поиск файлов, заканчивающихся на

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

Командная строка Linux для начинающих

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

  mkdir / tmp / tutorial cd / tmp / учебник  

Обратите внимание на использование абсолютного пути, чтобы убедиться, что мы создали каталог tutorial внутри / tmp .Без косой черты в начале команда mkdir попытается найти каталог tmp внутри текущего рабочего каталога, а затем попытается создать внутри него каталог tutorial . Если он не сможет найти каталог tmp , команда завершится ошибкой.

Если вы не догадались, mkdir - это сокращение от « m a k e dir ectory». Теперь, когда мы в безопасности в нашей тестовой области (дважды проверьте с помощью pwd , если вы не уверены), давайте создадим несколько подкаталогов:

  mkdir dir1 dir2 dir3  

Эта команда немного отличается.До сих пор мы видели только команды, которые работают сами по себе ( cd , pwd ) или имеют один элемент после ( cd / , cd ~ / Desktop ). Но на этот раз мы добавили три вещи после команды mkdir . Эти вещи называются параметрами или аргументами , и разные команды могут принимать разное количество аргументов. Команда mkdir ожидает по крайней мере один аргумент, тогда как команда cd может работать с нулем или единицей, но не более.Посмотрите, что произойдет, если вы попытаетесь передать команде неправильное количество параметров:

  mkdir cd / etc ~ / Рабочий стол  

Вернуться в наши новые каталоги. Приведенная выше команда создаст три новых подкаталога внутри нашей папки. Давайте посмотрим на них с помощью команды ls ( l i s t):

  ls  

Если вы выполнили несколько последних команд, ваш терминал должен выглядеть примерно так:

Обратите внимание, что mkdir создал все папки в одном каталоге.Это не создавало dir3 внутри dir2 внутри dir1 или любой другой вложенной структуры. Но иногда бывает удобно сделать именно это, и у mkdir есть способ:

  mkdir -p dir4 / dir5 / dir6 ls  

На этот раз вы увидите, что в список добавлено только dir4 , потому что dir5 находится внутри него, а dir6 находится внутри него.Позже мы установим полезный инструмент для визуализации структуры, но у вас уже есть достаточно знаний для подтверждения:

  cd dir4 ls cd dir5 ls CD ../..  

Используемый нами «-p» называется опцией или переключателем (в данном случае это означает «также создать каталоги p arent»). Параметры используются для изменения способа работы команды, позволяя одной команде вести себя по-разному.К сожалению, из-за причуд истории и человеческой природы параметры могут принимать разные формы в разных командах. Вы часто будете видеть их как отдельные символы, которым предшествует дефис (как в этом случае), или как более длинные слова, которым предшествуют два дефиса. Односимвольная форма позволяет комбинировать несколько параметров, хотя не все команды допускают это. И что еще больше запутывает ситуацию, некоторые команды вообще не идентифицируют свои параметры четко, независимо от того, является ли что-то одним из вариантов, определяется исключительно порядком аргументов! Вам не нужно беспокоиться обо всех возможностях, просто знайте, что варианты существуют, и они могут принимать разные формы.Например, все следующие слова означают одно и то же:

  # Не вводите их, они здесь только для демонстрационных целей. mkdir --parents --verbose dir4 / dir5 mkdir -p --verbose dir4 / dir5 mkdir -p -v dir4 / dir5 mkdir -pv dir4 / dir5  

Теперь мы знаем, как создать несколько каталогов, просто передав их в качестве отдельных аргументов команде mkdir . Но предположим, что мы хотим создать каталог с пробелом в имени? Давайте попробуем:

  mkdir другая папка ls  

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

  mkdir "папка 1" mkdir 'папка 2' папка mkdir \ 3 mkdir "папка 4" "папка 5" mkdir -p "папка 6" / "папка 7" ls  

Хотя командную строку можно использовать для работы с файлами и папками с пробелами в именах, необходимость экранировать их кавычками или обратной косой чертой немного усложняет задачу.Часто можно сказать человеку, который много пользуется командной строкой, просто по именам файлов: они будут использовать буквы и цифры и использовать подчеркивания («_») или дефисы («-») вместо пробелов.

Создание файлов с использованием перенаправления

Наша демонстрационная папка начинает наполняться каталогами, но в ней немного не хватает файлов. Давайте исправим это, перенаправив вывод команды таким образом, чтобы вместо вывода на экран он попал в новый файл. Во-первых, напомните себе, что сейчас показывает команда ls :

  ls  

Предположим, мы хотим записать вывод этой команды в виде текстового файла, который мы можем просмотреть или изменить дальше.Все, что нам нужно сделать, это добавить символ «больше» (">") в конец нашей командной строки, а затем имя файла для записи:

  ls> output.txt  

На этот раз ничего не выводится на экран, потому что вместо этого вывод перенаправляется в наш файл. Если вы просто запустите ls самостоятельно, вы увидите, что файл output.txt был создан. Мы можем использовать команду cat , чтобы посмотреть ее содержимое:

  cat output.текст  

Хорошо, значит, это не , а именно , что отображалось на экране ранее, но оно содержит все те же данные и в более удобном формате для дальнейшей обработки. Давайте посмотрим на другую команду, echo :

  echo "Это тест"  

Да, echo просто снова выводит свои аргументы (отсюда и название). Но совместите это с переадресацией, и вы сможете легко создавать небольшие тестовые файлы:

  echo "This is a test"> test_1.текст echo "Это второй тест"> test_2.txt echo "Это третий тест"> test_3.txt ls  

Вы должны cat каждого из этих файлов, чтобы отметить их содержимое. Но cat - это больше, чем просто программа для просмотра файлов - его название происходит от «con cat enate», что означает «связывать вместе». Если вы передадите более одного файла в cat , он выведет каждое из них, одно за другим, в виде одного блока текста:

  cat test_1.txt test_2.txt test_3.текст  

Если вы хотите передать несколько имен файлов одной команде, есть несколько полезных сочетаний клавиш, которые могут сэкономить вам много времени при вводе, если файлы имеют похожие имена. Знак вопроса («?») Может использоваться для обозначения «любого отдельного символа» в имени файла. Звездочка («*») может использоваться для обозначения «нуля или более символов». Иногда их называют «подстановочными знаками». Несколько примеров могут помочь, все следующие команды делают одно и то же:

  cat test_1.txt test_2.txt test_3.txt cat test _ ?. txt кошка test_ *  

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

Если вы посмотрите на результат ls , то заметите, что единственные файлы или папки, начинающиеся с «t», - это три тестовых файла, которые мы только что создали, так что вы можете даже упростить эту последнюю команду до cat t * , что означает «объединить все файлы, имена которых начинаются с t , за которыми следует ноль или более других символов».Давайте воспользуемся этой возможностью, чтобы объединить все наши файлы в один новый файл, а затем просмотрим его:

  cat t *> Commander.txt кот комбинированный.txt  

Как вы думаете, что произойдет, если мы выполним эти две команды во второй раз? Будет ли компьютер жаловаться, потому что файл уже существует? Добавит ли он текст в файл, чтобы он содержал две копии? Или полностью заменит? Попробуйте посмотреть, что произойдет, но чтобы не вводить команды снова, вы можете использовать клавиши Стрелка вверх, и Стрелка вниз, для перемещения вперед и назад по истории команд, которые вы использовали.Нажмите Стрелка вверх пару раз, чтобы перейти к первому cat , и нажмите Введите , чтобы запустить его, затем повторите то же самое еще раз, чтобы перейти ко второму.

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

  cat t * >> Commander.txt echo "Я добавил строку!" >> Combined.txt кот комбинированный.txt  

Повторите первую cat еще несколько раз, используя для удобства Стрелку вверх и, возможно, добавьте еще несколько произвольных команд echo , пока ваш текстовый документ не станет настолько большим, что он не поместится полностью. терминал сразу, когда вы используете cat для его отображения.Чтобы увидеть весь файл, нам теперь нужно использовать другую программу, которая называется пейджером (потому что она отображает ваш файл по одной «странице»). Старый стандартный пейджер назывался или , потому что он помещает строку текста внизу каждой страницы с надписью «-More-», чтобы указать, что вы еще не прочитали все. В наши дни есть гораздо лучший пейджер, который вы должны использовать вместо этого: поскольку он заменяет на , программисты решили назвать его минус .

  за вычетом комбинированного.txt  

При просмотре файла через минус вы можете использовать клавиши Стрелка вверх , Стрелка вниз , Page Up , Page Down , Home и End для перемещения по файлу. Дайте им возможность увидеть разницу между ними. По завершении просмотра файла нажмите q q uit минус и вернитесь в командную строку.

Примечание о регистре

Системы Unix чувствительны к регистру, то есть они учитывают «A.txt »и« a.txt »как два разных файла. Если бы вы запустили следующие строки, вы бы получили три файла:

  echo "Нижний регистр"> a.txt echo "Верхний регистр"> A.TXT echo "Смешанный регистр"> A.txt  

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

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

Хорошая практика именования
Когда вы учитываете как чувствительность к регистру, так и экранирование, хорошее практическое правило - использовать в именах файлов только строчные буквы, только буквы, цифры, подчеркивания и дефисы.Для файлов обычно также есть точка и несколько символов в конце, чтобы указать тип файла (называемый «расширением файла»). Это руководство может показаться ограничительным, но если вы в конечном итоге будете использовать командную строку с какой-либо частотой, вы будете рады, что придерживались этого шаблона.

.

Как найти строку в файлах в Linux Ubuntu

Как найти строку в файлах в Linux Ubuntu

В основном используются команды grep и find .

Найти строку в файле

grep строка имя файла

grep имя file.txt

Найти строку в файле без учета регистра

grep строка имя файла

grep -i имя файла.txt

Найти строку в текущем каталоге

строка grep.

имя grep.

Рекурсивно найти строку

grep -r строка.

grep -r имя.

Найти файлы, не содержащие строки

grep -L строка.

grep -L "foo" *

Рекурсивный поиск строки только в некоторых определенных файлах

grep строка -r. --include = *. myextension

grep строка -r. --include = *. {myextension, myextension2}

grep "name = Oscar" -r. --include = *. js

* если вы укажете --include, строка будет искать не во всех файлах, а только в включенных

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

grep строка -r.--exclude = *. {myextension2}

grep "Serializable" -rl. --exclude = *. {jar, class, svn-base, index}

Рекурсивно найти строку для всех файлов, включая одни расширения и исключая другие

grep строка -r. --include = *. myextension --exclude = *. myextension2

grep строка -r. --include = *. {myextension, myextension2} --exclude = *. {myextension3, myextension2}

grep "my = string" -r.--include = *. {js, html} --exclude = *. js

* Он не будет искать строку в файлах js.

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

grep строка -rl. --include = *. myextension

grep "name = Oscar" -rl. --include = *. js

Найдите файлы и найдите в них строку с помощью find

находка.-name '* .extension' -exec grep string +

найти. -name '* .txt' -exec grep Mytext {} +

найти. -type f \ (-name '* .htm' -or -name '* .html' \) -exec grep -i "mystring" {} +

Банкноты

  • Используйте двойные кавычки «Строка», если строка содержит пробелы
  • Обратите внимание на пустые пространства между расширениями между фигурными скобками, например. {txt, html}
  • Не используйте фигурные скобки для одного расширения e.g {html}

.

Смотрите также