Если вы должны сделать это из find, вам нужно вызвать оболочку:
find./ -type f -name "*.txt" -exec sh -c 'grep -EiH something "$1" | grep -E somethingelse | grep -E other' sh {} \;
Другие альтернативы включают использование xargs
вместо:
find./ -type f -name "*.txt" |
xargs -I{} grep -EiH something {} |
grep -EiH somethingelse |
grep -EiH other
Или, что намного безопаснее для произвольных имен файлов (, если ваш find
поддерживает-print0
):
find./ -type f -name "*.txt" -print0 |
xargs -0 grep -EiH something {} |
grep -Ei somethingelse |
grep -Ei other
Или вместо этого вы можете просто использовать цикл оболочки:
find./ -type f -name "*.txt" -print0 |
while IFS= read -d '' file; do
grep -Ei something "$file" |
grep -Ei somethingelse |
grep -Ei other
done