Одним из ключевых, чтобы помнить, что вы не можете посмотреть только на руководство для одной команды, в случае команд, которые выполняют другие команды.
Для вашей примерной команды
locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"
Вам нужна информация о не только xargs
, но также bash
и [
(это может быть в тесте
Manpage). Вам также может потребоваться информация о вашей оболочке (вероятно, также Bash) для правил цитирования, поскольку ваша команда включает в себя сложную строку сложную цитирую. Я уже могу сказать вам, что цитируемый аргумент не прав (и неправильно таким образом, чтобы появиться только при столкновении файла с пробелами в имени); Внутренний «{}»
, вероятно, должен быть '{}'
.
Итак, сначала вы обратитесь к Mainpage Xargs и увидеть [- я заменил-ул.]
для чего означает -I {}
, а [команда [начальная- Аргументы]]
Для чего Bash
и все после этого значит. Тогда вы бы обратитесь к Bash Bash
для чего --c
и т. Д.
, как только я закончил, написал все это Это пришло ко мне, просто изменив мутату для замены запятой запятой, или другой аналогичный символ должен решить проблему
Редактировать
Я закончил выбрать «:» вместо запятых, это нельзя использовать в имени файла и Работает нормально с новым GROK:
filter {
mutate {
gsub => ["message","\|",":"]
}
grok {
match => { "message" => "%{MONTH:syslog_month} %{MONTHDAY:syslog_day} %{TIME:syslog_time} localhost smbd\[%{INT:pid}\]: %{USER:user_service}:%{USER:user_session}:%{IP:client_ip}:%{HOSTNAME:client_NETBIOS}:%{GREEDYDATA:name_of_service}:%{YEAR:samba_year}/%{MONTHNUM:samba_month}/%{MONTHDAY:samba_day} %{TIME:samba_time}:%{HOST:domain}:%{WORD:action}:%{WORD:sucess}:%{SAMBAFILES}" }
}
}
, используя следующий рисунок:
SAMBAFILES (?:%{GREEDYDATA:file_start}:%{GREEDYDATA:file_end}|%{GREEDYDATA:file_position})
Это работает нормально под тестированием