в нем перечислены все файлы в "." которые содержат строку "string", но не показывают каталоги с запрещенным разрешением.
Что это будет эквивалентно этому, но сжимать xargs между ними?
find . -readable | xargs grep -l 'string'
вы можете просто использовать grep
если у него есть опция -R
grep -R -l "string" * 2>/dev/null
find . -type f -print0 | xargs -0 grep -l 'string'
Это обрабатывает имена с пробелами (и т.д.) в именах файлов - и предполагает, что вы используете GNU find и xargs.