Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Суббота, 23 марта 2019, 11:52:59 

Команды для поиска файлов
Команды для поиска файлов

Быстрый переход ...

» Команды для поиска ...


Команды для поиска файлов

Для поиска файлов в Unix предназначены две команды -- find и locate. Первая выполняет поиск непосредственно в момент запуска, а вторая делает поиск по списку файлов (базе данных), который обновляется обычно раз в сутки (в большинстве систем -- поздно ночью или рано утром).

У обеих команд есть как достоинства, так и недостатки. Так, find выдает результаты по текущему, "мгновенному" состоянию диска, но, к примеру, поиск по всему диску может занимать очень много времени. Напротив, locate выполняет поиск очень быстро, но во-первых, в базе данных может быть несколько устаревшая информация, а во-вторых, база данных составляется "из-под" пользователя "nobody" и не содержит информации о тех директориях, которые для него закрыты.

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

Как find, так и locate позволяют указывать шаблон имени файла, содержащий специальные символы "*", "?" и т.д. Такие шаблоны надо заключать в кавычки, чтобы shell не пытался их интерпретировать.
Поиск по диску сейчас -- find

Вызов find

Команда find ищет в указанных директориях и ниже файлы, отвечающие заданному критерию ("test"). Причем критерием может быть не только имя файла, но и, к примеру, время модификации, размер или тип (файл/директория/линк и т.д). Критерии могут объединяться при помощи булевских операторов, так что можно найти, например, все файлы с расширением .txt размером не более 10К, модифицированные не позднее прошлого месяца.

Формат вызова find следующий:

    find [список директорий] [критерий]

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

Директории в списке указываются через пробел. Имена критериев всегда начинаются с "-", аналогично ключам.

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

Самое частое использование find -- поиск файлов по имени. Для этого служит критерий "-name", которому указывается шаблон имени. К примеру, чтобы найти на всем диске все файлы с расширением .txt, надо воспользоваться командой

    find / -name '*.txt'

GNU-версия find, используемая в Linux, понимает также критерий "-iname", отличающийся тем, что маленькие и большие буквы не различаются. Так, команда

    find / -iname '*.exe'

найдет все файлы с расширениями .exe, .EXE, .Exe и т.д.



Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008