Полезный пример поиска в UNIX, чтобы найти файлы, содержащие 2 и более разных подстрок. Например, мне нужно было найти все файлы конфигурации, в которых одновременно есть значение «field_spacing» и «excluded: false».
Grep такой функции поиска не имеет, разве что вы напишите сложное регулярное выражение, которое учитывает ваши требования. Потому мы воспользуемся piping в UNIX и составим следующую команду:
| 
					 1 2  | 
						grep -rlZ 'field_spacing' \  | xargs -0 grep -l 'excluded: false'  | 
					
Используя xargs вы можете наращивать цепочку далее и получить более сложные условия выборки.
| 
					 1 2 3  | 
						grep -rlZ 'str1' \  | xargs -0 grep -l 'str2'  | xargs -0 grep -l 'str3'  | 
					
Дополнительно можно ограничить поиск по определенным файлам, ключ —include:
| 
					 1 2  | 
						grep -rlZ 'field_spacing' --include=field* \  | xargs -0 grep -l 'excluded: false'  | 
					
Добавим сортировку, чтобы удобно было работать со списком файлов:
| 
					 1 2 3  | 
						grep -rlZ 'field_spacing' --include=field* \  | xargs -0 grep -l 'excluded: false' \  | sort  |