С GNU find
легко подключиться к xargs
.Типичный (бесполезный) пример:
find /var/log -name "*.log" | xargs dirname
Возвращает все имена каталогов, в которых содержится какой-либо файл журнала.
Та же команда с BSD find
не работает, заканчивая:
usage: dirname path
То есть xargs
не может передать записи списка файлов в справочную страницу dirname
.
BSD find
, в которой упоминаются опции -exec
и -execdir
, заявляя "Это поведение аналогично xargs (1). "
-exec утилита [аргумент ...] {} + То же, что и -exec, за исключением того, что` `{} '' заменяется накак можно больше путей для каждого вызова утилиты.Это поведение аналогично xargs (1).
-execdir утилита [аргумент ...] {} + То же, что и -execdir, за исключением того, что `` {} '' заменяется на столько путей, скольковозможно для каждого вызова утилиты.Это поведение аналогично xargs (1).
Каждый раз, когда я возвращаюсь к этим двум флагам, мне приходится снова читать документацию.Кажется, я не могу вспомнить их использование!Кроме того, я обеспокоен переносимостью скриптов в системах GNU / BSD, в основном в Linux, Open / FreeBSD и MacOS.
Любой способ передачи BSD find
в xargs
или -exec
действительноединственный вариант?