Имена файлов содержат пробелы, поэтому необходимо указать find
, чтобы выводить результаты, разделенные байтами NUL, а не переводом строки - вместо этого попробуйте следующее:
find . -print0 | xargs -0 egrep 'Cache'
От -0
до xargs
говорит, что интерпретировать данные из STDIN как разделенные байтами NUL.(Одиночные кавычки вокруг Cache
здесь не нужны.)
Многие инструменты в Unix-подобных системах также имеют возможность создавать или использовать данные, разделенные NUL-байтами, поскольку 0x00
и 0x2F
(forwardкосая черта) - это единственные два байта, которые не разрешены в именах файлов или каталогов - это распространенный способ безопасного обращения с именами файлов с пробелами или переводами строки.
В качестве последнего примечания, чтобы быть очень требовательным, вы можете захотетьчтобы изменить это значение на:
xargs -0 egrep Cache /dev/null
... чтобы вы были уверены, что всегда будет более одного параметра для grep
, и вы получите выходные данные, которые последовательно префиксуются с именем файла.