Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Изменить порядок проверки критериев и выполнения операторов можно с помощью скобок. Поскольку в командной оболочке у них есть особое назначение, скобки также следует выделять с помощью обратного слэша. Кроме того, если вы применяете шаблон для имени файла, то следует использовать кавычки, чтобы оболочка не выполняла подстановку имени, а прямо передала шаблон команде
find
X
(-newer X -о -name "_*" )
Мы приведем пример сразу после описания "Как это работает". А сейчас выполните упражнение 2.16.
find
Попытаемся найти в текущем каталоге файлы, измененные после модификации файла while2.
$ <b>find . -newer while2 -print</b>
.
./elif3
./words.txt
./words2.txt
./_trap
$
Все чудесно, за исключением того, что вы нашли ненужный вам текущий каталог. Вас интересуют только обычные файлы, поэтому добавьте дополнительный критерий
-type f
$ <b>find . -newer while2 -type f -print</b>
./elif3
./words.txt
./words2.txt
./_trap
$
Как это работает
Как это работает? Вы определили, что команда
find
.
-newer while2
-type f
-print
Теперь найдем файлы с именами, начинающимися с символа подчеркивания или измененные позже, чем файл while2, но в любом случае обычные файлы. Этот пример покажет, как объединять критерии с помощью скобок.
$ <b>find . ( -name "_*" -or -newer while2 ) -type f -print</b>
./elif3
./words.txt
./words2.txt
./_break
./_if
./set
./_shift
./_trap
./_unset
./ until
$
Это не слишком трудный пример, не так ли? Вы должны экранировать скобки, чтобы они не обрабатывались командной оболочкой, и заключить в кавычки символ
*
find
Теперь, когда вы можете правильно искать файлы, рассмотрим действия, которые можно совершить, когда найден файл, соответствующий вашей спецификации. И снова в табл. 2.13 перечислены только самые популярные действия; полный список можно найти на страницах интерактивного справочного руководства.
Таблица 2.13
Действие | Описание |
---|---|
-exec <i>команда</i> | Выполняеткоманду ; |
-ok <i>команда</i> | Подобно действию exec командой ; |
-print | Вывод на экран имени файла |
-ls | Применение команды ls -dils |
Команда в аргументах
-exec
-ok
;
-exec
-ok
find
{}
-exec
-ok
Объяснение, возможно, не слишком легкое для понимания, поэтому рассмотрим пример, который поможет внести ясность. Взгляните на простой пример, использующий хорошую безопасную команду
ls
$ <b>find . -newer while2 -type f -exec ls -l {} ;</b>
-rwxr-xr-x 1 rick rick 275 Feb 8 17:07 ./elif3
-rwxr-xr-x 1 rick rick 336 Feb 8 16:52 ./words.txt
-rwxr-xr-x 1 rick rick 1274 Feb 8 16:52 ./words2.txt
-rwxr-xr-x 1 rick rick 504 Feb 8 18:43 ./_trap
$
Как видите, команда
find
find
Вторая очень полезная команда, заслуживающая рассмотрения, — это команда
grep
find
grep
find
grep
-exec