Я знаю то, для чего команда находки, но я не могу выяснить, что круглые скобки для. Объясните.
Это - функция find
это позволяет Вам собрать в группу различные тесты. Например:
find . \( -name foo -or -name bar -o -name baz \) -size +1M
Круглых скобок нужно оставить (\(
и \)
вместо (
и )
) потому что круглые скобки являются специальными символами для оболочки (они - usied к командам выполнения в подоболочках), таким образом, их нужно оставить, чтобы быть переданными find
и не "съеденный" оболочкой.
Команда выше найдет любой файл, имя которого является любым из foo
, bar
или baz
и чей размер> 1M. Теперь, возьмите эту структуру каталогов в качестве примера:
$ ls -lh *
dir1:
total 2.0M
-rw-r--r-- 1 terdon terdon 1.0M Mar 7 01:24 bar
-rw-r--r-- 1 terdon terdon 1.0M Mar 7 01:24 foo
dir2:
total 4.0M
-rw-r--r-- 1 terdon terdon 2.0M Mar 7 01:24 file
-rw-r--r-- 1 terdon terdon 2.0M Mar 7 01:24 foo
Существует два файла, там назвал foo
, но только один> 1M в размере. Существует 2 файла, которые являются> 1M в размере, но только один называют foo
, bar
, или baz
. Поэтому я ожидаю, что команда выше только возвратится dir2/foo
как, действительно, это делает:
$ find . \( -name foo -or -name bar -o -name baz \) -size +1M
./dir2/foo
Хорошо, но что, если я выполняю его без круглых скобок?
$ find . -name foo -or -name bar -o -name baz -size +1M
./dir2/foo
./dir1/bar
./dir1/foo
Это находит меня всеми файлами названный foo
, все файлы называют bar
и все файлы называют bar
чей размер> 1M. Так, bar
и foo
в dir1
возвращаются даже при том, что их размер <1M.
Так, круглые скобки очень полезны для обработки a find
управляйте, чтобы объединил различные наборы тестов. В сочетании с находкой -or
, -and
и -not
операторы, это делает для чрезвычайно мощного инструмента.
Что они делают в Вашем примере, я не могу сказать, так как Вы на самом деле не даете рабочую команду как пример. Это будет зависеть от какой pattern
. Если Вы действительно используете find . -ls
и затем, после этого, другой набор тестов в круглых скобках, затем они ничего не делают с тех пор find . -ls
уже соответствия и списки все файлы и каталоги.