Как бы я изменил следующую инструкцию bash, чтобы получить только каталоги, которые точно соответствуют genre_ (basename) и другому genre_* . В качестве следующего шага я добавил | wc -l ко второй find , но я получаю для каждой строки одно и то же очень большое число, которое говорит мне, что это счет в разных каталогах (почему?)?

$ find . -name 'genre_' -exec dirname {} \; | while EFS= read -r thedir; do echo "$(find . -name 'genre_*')"; done
./The-Specials/genre_
./The-Specials/genre_rock
./ACDC/genre_Hard-Rock
./We-3/genre_
./We-3/genre_Jazz

В приведенном выше выводе только ACDC должен быть отфильтрован.

1 ответ1

0

Признаюсь, я не понимаю, что должен делать ваш код (читай: вопрос не ясен в этом вопросе). Однако я могу ответить на это:

В качестве следующего шага я добавил | wc -l ко второй find , но я получаю для каждой строки одно и то же очень большое число, которое говорит мне, что это счет в разных каталогах (почему?)

Ты read -r thedir но thedir никогда не используется. Второй find - это одна и та же команда каждый раз, начиная с . отсюда и тот же номер.

Бонус: я не вижу смысла echo "$(find …)" . Этот код пахнет подозрительно. Наверное, стоит просто find …

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .