1

Выполняя поиск в текущем каталоге, где находится этот файл, эта команда поиска находит файл.

# find . page.tpl.php

Тем не менее, когда я ищу в дочернем каталоге, эта команда,

# find ../. page.tpl.php

распечатывает список файлов с запрошенным файлом, указанным в выводе,

.././parent_dir/page.tpl.php

Тем не менее, результаты,

find: `page.tpl.php': No such file or directory

Затем, когда я добавляю аргумент -name, он работает,

# find ../. -name page.tpl.php

Я просто забываю иногда использовать аргументы, и ложное отрицание действительно усугубляет. В чем дело?

2 ответа2

1

find [path] [expressions]

Имя файла не является выражением.

Действие по умолчанию - печать.

Для пути ".." лучше, чем ".."/. «Вы почти никогда не должны включать«. », если это не начало относительного пути.

0

Команда find использует:
найти [-H] [-L] [-P] [путь ...] [выражение]

Ваш первый пример был:
find ../. page.tpl.php

То, что вы сделали, дало найти два пути поиска. Поскольку выражением по умолчанию является print, содержимое двух путей было напечатано на стандартный вывод.

Учти это:

mkdir a b c 
touch  a/file1 a/file2 b/SANTACLAUS c/MONKEYS
find a b

$ find a b
a
a/file2
a/file1
b
b/SANTACLAUS

Ваш второй пример был:
.././parent_dir/page.tpl.php

Здесь вы указали один путь поиска. Ошибка говорит вам, что page.tpl.php не был найден в CWD. Я предполагаю, что это произошло из-за того, что у вас нет файла «page.tpl.php» в каталоге «parent_dir».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .