Основы программирования в Linux
Шрифт:
Таблица 2.11
Критерий | Описание |
---|---|
– atime N | К файлу обращались последний раз N дней назад |
– mtime N | Файл последний раз изменялся N дней назад |
– name шаблон | Имя файла без указания пути соответствует
find и не будет немедленно обработан командной оболочкой, его следует всегда заключать в кавычки |
– newer другой файл | Текущий файл, измененный позже, чем другой файл |
– type С | Файл типа C , где C может принимать определенные значения; наиболее широко используемые "d " для каталогов и "f " для обычных файлов. Остальные обозначения типов можно посмотреть на страницах интерактивного справочного руководства |
– user имя пользователя | Файл принадлежит пользователю с заданным именем |
Вы также можете объединять критерии с помощью операторов. Как показано в табл. 2.12, у большинства из них две формы записи: короткая и более длинная форма.
Таблица 2.12
Оператор, короткая форма | Оператор, длинная форма | Описание |
---|---|---|
! | – not | Инвертирование критерия |
– а | – and | Оба критерия должны быть истинны |
– о | – or | Один из критериев должен быть истинным |
Изменить порядок проверки критериев и выполнения операторов можно с помощью скобок. Поскольку в командной оболочке у них есть особое назначение, скобки также следует выделять с помощью обратного слэша. Кроме того, если вы применяете шаблон для имени файла, то следует использовать кавычки, чтобы оболочка не выполняла подстановку имени, а прямо передала шаблон команде
Мы приведем пример сразу после описания "Как это работает". А сейчас выполните упражнение 2.16.
Попытаемся найти в текущем каталоге файлы, измененные после модификации файла while2.
– newer while2 -print
Все чудесно, за исключением того, что вы нашли ненужный вам текущий каталог. Вас интересуют только обычные файлы, поэтому добавьте дополнительный критерий
– newer while2 -type f -print
Как это работает
Как это работает? Вы определили, что команда
Теперь найдем файлы с именами, начинающимися с символа подчеркивания или измененные позже, чем файл while2, но в любом случае обычные файлы. Этот пример покажет, как объединять критерии с помощью скобок.
Это не слишком трудный пример, не так ли? Вы должны экранировать скобки, чтобы они не обрабатывались командной оболочкой, и заключить в кавычки символ
Теперь, когда вы можете правильно искать файлы, рассмотрим действия, которые можно совершить, когда найден файл, соответствующий вашей спецификации. И снова в табл. 2.13 перечислены только самые популярные действия; полный список можно найти на страницах интерактивного справочного руководства.
Таблица 2.13
Действие | Описание |
---|---|
– exec команда | Выполняет команду . Наиболее широко используемое действие. После табл. 2.13 приведено объяснение способа передачи параметров в команду. Это действие следует завершать символьной парой \; |
– ok команда | Подобно действию exec , за исключением того, что перед обработкой файловкомандой выводится подсказка для получения подтверждения пользователя на обработку каждого файла. Это действие следует завершать символьной парой \; |
– print | Вывод на экран имени файла |
– ls | Применение команды ls -dils к текущему файлу |
Команда в аргументах
Объяснение, возможно, не слишком легкое для понимания, поэтому рассмотрим пример, который поможет внести ясность. Взгляните на простой пример, использующий хорошую безопасную команду
– newer while2 -type f -exec ls -l {} \;