Это происходит потому, что одно из имен файлов содержит кавычки и передается в xargs как есть. Это означает , что xargs управляют как xargs grep 'addresses' > /tmp/addr some file'name - и есть незавершенная '
Проблема в том, что вы используете find | xargs Это то, что вы действительно не хотите делать, даже если это выглядит заманчиво.
Есть несколько решений этой проблемы:
- Используйте параметр - -print0для- findи- -0для- xargs:
 - find src/main/webapp/WEB-INF/ -name "*" -print0 | xargs -0 grep 'addresses' > /tmp/addr
 - Это рекомендуемый способ передачи из - findв- xargsпоскольку он может работать с любым именем файла, даже с теми, которые содержат переводы строк.
 - Обратите внимание, что использование - -name "*"является излишним. Вам также следует рассмотреть возможность использования- -type fдля фильтрации только файлов. И, конечно, вы также можете вызвать программу из- find:
 - find … -type f -exec grep 'addresses' {} \; > /tmp/addr
 - Но это тоже не рекомендуется. Смотрите второй вариант: 
- В целом используйте более эффективный подход - рекурсивный - grepс опцией- -r:
 - grep -r 'addresses' src/main/webapp/WEB-INF/ > /tmp/addr