




См. найти человека. (в частности, про -exec)
При использовании -exec для запуска команды для каждого из найденных файлов, {} заменяется именем каждого найденного файла, и команда завершается \;.
В вашем примере для всех файлов, найденных в текущем каталоге (.), совпадающих с именем *.clj, будет запущена команда grep -r resources (чтобы найти строку resources, если она существует в каждом из этих файлов).
На самом деле это несколько излишне, поскольку -r предназначен для рекурсивного поиска подкаталогов, и это то, что find уже делает.
Я не подумал заглянуть в man find, потому что он не выглядит как часть команды find, равно как и расширение оболочки, конвейер или другой оператор перенаправления является частью команды, рядом с которой он находится. Я предположил, что это какая-то магия синтаксиса оболочки, которую я не смог бы идентифицировать, не зная ее названия.
В find параметр -exec захватывает остальные параметры до; (точка с запятой), которая должна быть экранирована, следовательно, \ ;. В этом диапазоне {} заменяется проверяемым именем файла.
Символьная строка "{}" будет заменена текущим обрабатываемым файлом. Экранированная точка с запятой завершает аргумент команды для параметра -exec.
Рассмотрим эту альтернативную команду, которую мне легче понять:
find . -name *.clj | xargs grep -r resources
Но у которого есть главный недостаток - неправильная обработка файлов со встроенными пробелами и т.п.
Строка {} в find заменяется путем к текущему файлу.
Точка с запятой используется для завершения команды оболочки, вызываемой утилитой find.
Он должен быть экранирован или заключен в кавычки, чтобы он не интерпретировался оболочкой, потому что ; является одним из специальных символов, используемых оболочкой (операторами списка).
Обратите внимание, что "grep -r" не требуется, если эти файлы .clj не являются папками. find по умолчанию является рекурсивным, поэтому grep не обязательно. (grep будет загружен в каждый файл.) Вы также можете использовать вместо этого xargs, поскольку с вашей текущей командой вы не узнаете, из каких файлов вы получаете обращения.