Список содержимого директорий, содержащих «kernel» в имени
Необходимо найти все директории, содержащие «kernel» в имени, и вывести список файлов и директорий внутри них. Можно использовать команду ls в комбинации с find.
Использование find с -exec
Сначала найдём все директории, содержащие «kernel», а затем выполним ls. Рассмотрим опцию -exec в команде find:
find / -name '*kernel*' -type d -exec ls -l --color {} ;
- /: Абсолютный путь к корневой директории.
- -name ‘*kernel*’: Поиск директорий, содержащих «kernel» в имени.
- -type d: Поиск только директорий.
- -exec ls -l —color {} ;: Выполнение ls -l —color для каждой найденной директории. {} заменяется на путь к директории, ; указывает конец команды -exec.
Вывод разделен на секции: каждая соответствует одной найденной директории.
Без -exec, команда find / -name ‘*kernel*’ -type d вернет список путей (например, ./etc/kernel, ./proc/kernel). Содержимое каждой директории можно посмотреть отдельно, выполнив ls -l для каждого пути.
Использование xargs
Используем оператор | (pipe) и команду xargs:
find / -name '*kernel*' -type d | xargs ls -l --color
Результаты find передаются в качестве аргументов ls через xargs. ls -l —color выполняется один раз для всех найденных директорий, и результат группируется. Вывод отличается от варианта с -exec: вывод для каждой директории не является отдельным блоком.
Рассмотрены два способа объединения find и ls. -exec в find выполняет ls для каждой директории отдельно, а xargs передает все результаты find команде ls единовременно, что может быть эффективнее. Выбор метода зависит от требований к выводу и производительности.