Команда find linux

1.1, общая форма команды find

Общая форма команды find, приведенная в документе man:

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

команда Описание
path Путь к каталогу, который ищется командой find. Например, используйте. Для представления текущего каталога и / для представления корневого каталога системы.
expression Выражение можно разделить на
-options Укажите общие параметры команды find, подробно описанные в следующем разделе.
-print Команда find выводит сопоставленные файлы на стандартный вывод
-exec Команда find выполняет команду оболочки, заданную этим параметром для соответствующего файла. Соответствующая команда имеет вид,нотас участиемПространство между
-ok Он имеет тот же эффект, что и -exec, за исключением того, что команда оболочки, заданная этим параметром, выполняется в более безопасном режиме.Перед выполнением каждой команды будет выдано приглашение, позволяющее пользователю определить, выполнять ли ее.

пример 1:Удалить файлы с нулевым размером файла

(Вы также можете сделать это: rm -i Или найдите ./ -size 0 | xargs rm -f &)

Пример 2:Чтобы вывести список соответствующих файлов с помощью команды ls -l, вы можете поместить команду ls -l в опцию -exec команды find:

Пример 3:В каталоге / logs найдите файлы, время изменения которых составляет до 5 дней, и удалите их:

Пример 4:Найдите в текущем каталоге все файлы, имена которых заканчиваются на .conf и время изменения которых превышает 5 дней, и удалите их, но перед удалением выведите подсказку.

Некоторые люди также описывают структуру команды find следующим образом:

con GREP найдем любой текст в любом файле

Прежде всего мы объясним доступные варианты:

  • –i: не будет различать верхний и нижний регистр.
  • –w: заставить его находить только определенные слова.
  • –v: выбирает строки, которые не совпадают.
  • –n: показывает номер строки с запрошенными словами.
  • –h: удаляет префикс из имени файла Unix в выводе.
  • –r: рекурсивный поиск в каталогах.
  • –R: как -r, но следуйте всем символическим ссылкам.
  • –l: показывает только имена файлов с выделенными строками.
  • –c- Показывает только одно количество выбранных строк для каждого файла.
  • -Цвет: Отображает совпадающие шаблоны в цветах.

На изображении, которое вы указали в заголовке этой статьи, я искал слово «Изображения» в файле «830.desktop», который находится по этому пути. Как видите, я написал:

grep Imágenes /home/pablinux/Documentos/830.desktop

Имейте в виду, что в этой статье мы напишем примеры, которые необходимо изменить в соответствии с нашими поисковыми предпочтениями. Когда мы говорим «Файл», «Слово» и т. Д., Мы будем ссылаться на файл с его путем.. Если бы я просто написал «grep Images 830.desktop», я бы получил сообщение о том, что файл не существует. Или так было бы, если бы файл не находился в корневом каталоге.

Другие примеры:

  • grep -i images /home/pablinux/Documentos/830.desktop, где «изображения» — это слово, которое мы хотим найти, а остальное — файл с его путем. В этом примере выполняется поиск «изображений» в файле «830.desktop» без учета регистра.
  • grep -R изображения: он будет искать во всех строках каталога и всех его подкаталогах, где найдено слово «изображения».
  • grep -c пример test.txt: это будет искать нас и показывать общее количество раз, когда «example» появляется в файле с именем «test.txt».

find + sed

К результатам команды find можно сразу же применить

sed

find . -type f -name *.php -exec sed -i s@python/old_file_name\.php@python/new_directory/new_name\.php@ {} \;

. означает, что ищем в текущей директории (и вложенных)

Эта команда заменяет везде

на

Следующий пример

find . -type f -name *.php -exec sed -n /\/i\/aws\/oauth.php/ p {} \;

Эта команда ищет по всем .php файлам строку /i/aws/oauth.php

Если нужно не найти или заменить строку а показать название файла, в котором есть определённые символы
— удобно воспользоваться связкой find + grep

Добавить в функцию my_function дополнительный аргумент — сразу в всех .php файлах.

find -type f -name «*.php« -exec sed smy_function(\$old_arg1,\ \$old_arg2)my_function(\$old_arg1,\ \$old_arg2,\ \$new_arg1 {} \;

find -type f -name «*.php« -exec sed smy\_function(\$old\_arg1,\ \$old\_arg2)my\_function(\$old\_arg1,\ \$old\_arg2,\ \$new\_arg1 {} \;

Исключить директорию из поиска

Из предыдущего параграфа понятно, что с помощью

можно исключить директорию из поиска.

Пример: найти в ./code все файлы, заканчивающиеся на index.php
но проигнорировать поддиректории на p, то есть в директориях python и php не искать.

find ./code -path «./code/p*» -prune -false -o -name «*index.php»

./code/js/errors/index.php
./code/js/index.php
./code/c/index.php
./code/cpp/index.php
./code/go/pointers/index.php
./code/go/declare_variable/index.php
./code/go/constants/index.php
./code/go/index.php
./code/java/index.php
./code/dotnet/index.php
./code/ruby/index.php
./code/theory/index.php
./code/index.php

-false нужен чтобы не выводить проигнорированные директории.

Ещё один способ исключить директорию из поиска

find ./code -name «*.php« -not -path «./code/p*»

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

df -h /boot

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1014M 194M 821M 20% /boot

Найти обычные файлы определённого размера

Чтобы найти обычные файлы нужно использовать
-type f

find /boot -size +20000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img

Файлы бывают следующих типов:

— : regular file

d : directory

c : character device file

b : block device file

s : local socket file

p : named pipe

l : symbolic link

Подробности в статье —

«Файлы в Linux»

find /boot -size +10000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

То же самое плюс показать размер файлов

find /boot -size +10000k -type f -exec du -h {} \;

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
21M /boot/initramfs-3.10.0-1160.el7.x86_64.img
13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

Основное регулярное выражение

GNU Grep имеет два набора функций регулярных выражений, Basic и Extended. По умолчанию интерпретирует шаблон как основное регулярное выражение.

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

Используйте символ ^ (символ каретки), чтобы сопоставить выражение в начале строки. В следующем примере строка ^kangaroo будет соответствовать только в том случае, если она встречается в самом начале строки.
grep «^kangaroo» file.txt
Используйте символ $ (доллар), чтобы соответствовать выражению в конце строки. В следующем примере строка kangaroo$ будет соответствовать только в том случае, если она встречается в самом конце строки.
grep «kangaroo$» file.txt
Используйте . (точка) символ для соответствия любому отдельному символу. Например, чтобы сопоставить все, что начинается с kan затем имеет два символа и заканчивается строкой roo, вы можете использовать следующий шаблон:
grep «kan..roo» file.txt
использование (скобки) для соответствия любому отдельному символу, заключенному в скобки. Например, найдите строки, которые содержат accept или « accent, вы можете использовать следующий шаблон:
grep «accet» file.txt
использование (скобки) для соответствия любому отдельному символу, заключенному в скобки. Следующий шаблон будет соответствовать любой комбинации строк, содержащих co(any_letter_except_l)a, такой как coca, cobalt и т. Д., Но не будет совпадать со строками, содержащими cola,
grep «coa» file.txt

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

Использование регулярных выражений

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

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

$ grep "Class " Students.txt

Эта команда вернет все строки, которые говорят «Class 1», «Class2» или «Class 3».

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

$ grep "Class " Students.txt

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

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

$ grep "^Class" Students.txt

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

$ grep "Class " Students.txt

Знак доллара $ используется для поиска шаблона, который встречается только в конце строки.

$ grep "1$" Students.txt

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

$ grep "A….a" Students.txt

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

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

Утилиты – это специализированные
программы, предназначенные для 
обслуживания и оптимизации работы
системы, программы-помощники, решающие задачи,
с которыми сама оперативная система справиться
не в состоянии. Большинство утилит предназначено
для обслуживания файловой системы и дисков.
Некоторые утилиты используются для ведения
архивов данных, а специальные антивирусные
программы обеспечивают защиту системы
от компьютерных вирусов. Утилита – необходимая
компонента инструментария программиста
любого уровня и, в первую очередь, прикладного.
Первоначально слово «утилита» отождествлялось
с простыми маленькими программами. Но
сегодняшние утилиты часто занимают десятки
мегабайт и по сложности не уступают некоторым
офисным пакетам. И выполнять они могут
уже не одну – две операции, как раньше,
а значительно больше…

Многие утилиты представляют собой серьезные коммерческие
пакеты, которые продаются в красивых
коробках в магазинах. Но большинство
утилит, относящихся к разряду условно-бесплатного
программного обеспечения (shareware), можно
найти в свободном доступе в сети Internet.

В настоящее время существует много различных наборов
утилит (Microsoft PLUS 98, Norton Utilities , Nuts & Bolts
98), а также множество отдельных утилит
(Anti Viral Toolkit Pro, First Aid (Cybermedia),Power Strip (Etitech),
SciTech Display , Win Boost (Magellas Corp) и др.).

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

Сервисные программы 
подразделяются на два вида:

  1. стандартные программы, входящие в состав операционной системы;
  2. специализированные программы, часто объединяемые в комплексы (Norton Utilities (NU), или Acronis Power Utilities). Специализированные программы не только дублируют функции программ операционной системы, но и значительно расширяют их возможности в программном обслуживании устройств компьютера, хранении и защите данных.

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

    • антивирусные программы;
    • файловые менеджеры;
    • программы резервирования;
    • программы-упаковщики (архиваторы);
    • программы контроля и диагностики компьютера;
    • программы обслуживания дисков;
    • программы – КЭШи и программы оптимизации дисков;
    • программы обслуживания операционной системы;
    • программы обслуживания сети.

ОСНОВНЫЕ ПАРАМЕТРЫ КОМАНДЫ FIND

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

-P никогда не открывать символические ссылки

-L — получает информацию о файлах по символическим ссылкам

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

-maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.

-depth — искать сначала в текущем каталоге, а потом в подкаталогах

-mount искать файлы только в этой файловой системе.

-version — показать версию утилиты find

-print — выводить полные имена файлов

-type f — искать только файлы

-type d — поиск папки в Linux

find — синтаксис и зачем оно нужно

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

Базовый синтаксис ключей (забран с Вики):

-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки

Опция `-name’ различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname’;

-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;

-user — владелец: имя пользователя или UID;

-group — владелец: группа пользователя или GID;

-perm — указываются права доступа;

-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);

-atime — время последнего обращения к файлу (в днях);

-amin — время последнего обращения к файлу (в минутах);

-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);

-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);

-mtime — время последнего изменения файла (в днях);

-mmin — время последнего изменения файла (в минутах);

-newer другой_файл — искать файлы созданные позже, чем другой_файл;

-delete — удалять найденные файлы;

-ls — генерирует вывод как команда ls -dgils;

-print — показывает на экране найденные файлы;

-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);

-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;

-ok — перед выполнением команды указанной в -exec, выдаёт запрос;

-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;

-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;

-prune — используется, когда вы хотите исключить из поиска определённые каталоги;

-mount или -xdev — не переходить на другие файловые системы;

-regex — искать по имени файла используя регулярные выражения;

-regextype тип — указание типа используемых регулярных выражений;

-P — не разворачивать символические ссылки (поведение по умолчанию);

-L — разворачивать символические ссылки;

-empty — только пустые каталоги.

Примерно тоже самое, только больше и в не самом удобочитаемом виде, т.к надо делать запрос по каждому ключу отдельно, можно получить по

Результатам будет нечто такое из чего можно вычленять справку по отдельному ключу или команде (кликабельно):

В качестве развлечения можно использовать:

Дабы получить мануал из самой системы по базису и ключам (тоже кликабельно);

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

Options and Optimization for Find Command for Linux

find is configured to ignore symbolic links (shortcut files) by default. If you’d like the find command to follow and show symbolic links, just add the -L option to the command, as we did in this example.

find can help Linux find file by name. The Linux find command enhances its approach to filtering so that performance is optimised. The user can find a file in Linux by selecting three stages of optimisation-O1, -O2, and -O3. -O1 is the standard setting and it causes find to filter according to filename before it runs any other tests.

-O2 filters by name and type of file before carrying on with more demanding filters to find a file in Linux. Level -O3 reorders all tests according to their relative expense and how likely they are to succeed.

Назначение операторов find и grep

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

Команда grep в Linux также относится к поисковым, но внутри файлов. Буквальный перевод команды – «глобальная печать регулярных выражений», но под печатью здесь понимается вывод результатов работы на устройство по умолчанию, каковым обычно является монитор. Обладая огромным потенциалом, оператор используется достаточно часто и позволяет производить поиск внутри одного или нескольких файлов по заданным фрагментам (шаблонам). Поскольку терминология в Linuxе существенно отличается от таковой в среде Windows, очень многие пользователи испытывают значительные трудности с использованием этих команд. Постараемся устранить этот недостаток.

Базовые команды для работы с терминалом

То, что поможет при работе с консолью в целом.

  • clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
  • history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
  • whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
  • man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.

Search by the Time Parameter

14. Search for File Altered Precisely at 90 Days

If a user wants to search for files that were modified exactly before 90 days, then they need to enter the following file command:

16. Modified Files Within a Time Range

In case a user wants to look for a file that was modified in a given time range, for example, more than 30 days and less 90 days, use the following command:

 18. Files Changed Exactly Below Given Time

So let’s say if a user wants to see all files whose log is changed exactly below 30 minutes, for example, then type the following command

20. File in a Given Time Range (Hours/Minutes)

The command will allow users to search for files modified in a given range. For example, if one needs to see a file that was modified after 5 minutes and before 25 minutes then enter the following command:

Find Files by Name using find command

1. Find From the Current Directory

The command searches the current working directory for the file name ‘putty.txt’ However if a user wants the ‘find command’ to return only files and not the directories then one has to add -type f at the end of the command.

3. Find Files in /Home Directory Regardless of Case Sensitive

The command seeks to look for all files irrespective of the case, i.e., uppercase or lowercase in the /home directory. Therefore the result will display all results that match the file name.

4. Search All Directories for a Particular File

The command searches directories with a specific name such as ‘puttygen’ in the root folder. For example, the title to search is ‘puttygen,’ then the user has to type the below command.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: