Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

Выполнение команды займет какое-то время, она будет искать на нашей машине и на сетевом диске машины с ОС Windows. Это происходит потому, что на компьютере с Linux смонтирована (с помощью пакета SAMBA) порция файловой системы машины с ОС Windows. Похоже, что подобный поиск будет вестись, даже если мы знаем, что искомый файл находится на машине под управлением ОС Linux.

В этом случае на помощь приходит первая опция. Если вы укажете опцию

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

# find / -mount -name test -print

/usr/bin/test

#

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

Полная синтаксическая запись команды

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

find [путь] [опции] [критерии] [действия]

Часть записи

[путь]
понятна и проста: вы можете указать абсолютный путь поиска, например,
/bin
, или относительный, например
..
При необходимости можно задать несколько путей — например,
find /var /home
.

В табл. 2.10 перечислены основные опции команды.

Таблица 2.10

Опция Описание
– depth
Поиск в подкаталогах перед поиском в самом каталоге
– follow
Следовать по символическим ссылкам
– maxdepths N
При поиске проверять не более
N
вложенных уровней каталога
– mount
(или
– xdev
)
Не искать в каталогах других файловых систем

Теперь о критериях. В команде

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

Таблица 2.11

Критерий Описание
– atime N
К файлу обращались последний раз
N
дней назад
– mtime N
Файл последний раз изменялся
N
дней назад
– name шаблон
Имя файла без указания пути соответствует заданному шаблону. Для гарантии того, что шаблон будет передан в команду
find
и не будет немедленно обработан командной оболочкой, его следует всегда заключать в кавычки
– newer другой файл
Текущий файл, измененный позже, чем другой файл
– type С
Файл типа
C
, где
C
может принимать определенные значения; наиболее широко используемые "
d
" для каталогов и "
f
" для обычных файлов. Остальные обозначения типов можно посмотреть на страницах интерактивного справочного руководства
– user имя пользователя
Файл принадлежит пользователю с заданным именем

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

Таблица 2.12

Оператор, короткая форма Оператор, длинная форма Описание
!
– not
Инвертирование критерия
– а
– and
Оба критерия должны быть истинны
– о
– or
Один из критериев должен быть истинным

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

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

\(-newer X -о -name "_*" \)

Мы приведем пример сразу после описания "Как это работает". А сейчас выполните упражнение 2.16.

Упражнение 2.16 Применение команды
find
с критериями

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

$ find .
– newer while2 -print

.

./elif3

./words.txt

./words2.txt

  • Читать дальше
  • 1
  • ...
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: