|
Начало Работа в командной строке
Почему find(1) не находит существующие файлы? Типичный пример этой "проблемы": в дереве ${tree} существует файл с именем "foo",
но такая команда ничего о нем не сообщает, хотя мы хотим видеть сведения о всех файлах
с именами "foo" или "bar":
$ find ${tree} -name foo -or -name bar -ls
Дело здесь в том, что в семантике find(1) операция "-ls" -- тоже логический предикат.
Значит, неявная группировка операций будет такой:
( -name foo ) -or ( -name bar -and -ls )
Теперь нам очевидно, что "-ls" будет выполнен, только если предикат
"-name bar" вернет истинное значение. Напротив, для файла "foo" не будет
выполнено вообще никакой операции. Постойте, а как же неявный "-print"?
Он исполняется по-умолчанию, только если в командной строке вообще нет
исполнительных предикатов, но наша строка уже содержит "-ls".
Точно так же надо быть внимательным с группировкой остальных исполнительных
предикатов find(1):
"-exec", "-print", "-print0", "-ok".
Создано: Yar Tikhiy
|