Хотя вы можете передавать такие команды по конвейеру в оболочку, это может вызвать несколько очень проблематичных, поскольку любые глобусы, переменные и другие будут расширены.
Имена файлов, содержащие, например, Звездочки ( *
, glob) или знаки доллара ( $
, расширение переменных и команд) вызовут проблемы. Вам нужно убедиться, что вы все цитируете правильно, и в общем случае ваши имена файлов могут содержать сами кавычки, так что это не так просто.
Но в случае find
он может сам выполнять внешние команды:
find ./ -type f -exec wc -l {} \;
{}
заменяется текущим именем файла, а точка с запятой (заключенная в кавычки) требуется конец.
По крайней мере, некоторые версии find
поддерживают альтернативный формат, который дает несколько имен файлов для команды за один раз, сохраняя кучу выполнений:
find ./ -type f -exec wc -l {} \+