Обернуть оператор if в вызове sh:
find -iname file.xxx | xargs -I {} sh -c 'grep -Fq "string" {} && { echo {}; }'
Использовать цикл while вместо xargs
find -iname file.xxx | while read -r file; do
if grep -Fq "$file"; then
# do something
echo "$file"
fi
done
Я предполагаю, что вы хотите сделать больше, чем повторитьимя файла.Если это все, что вы пытаетесь сделать, используйте опцию grep -l
:
find -iname file.xxx | xargs grep -Fl "string"