Если вы используете sh -c
, как предлагает Аарон, вы можете передать весь конвейер как один аргумент, эффективно выполняя:
sh -c "ls -l foo/bar | wc -l"
Если вы используете отдельные аргументы, они потребляются sh, а не передаютсядо ls (следовательно, вы видите только текущий каталог).
Обратите внимание, что в моей системе ls -l
включает в себя как общее количество, так и список найденных файлов, что означает, что показанное число на единицу больше, чемколичество файлов.Так что советую:
<exec executable="sh" outputproperty="noOfFiles">
<arg value="-c" />
<arg value="ls foo/bar | wc -l" />
</exec>